首页 > 代码库 > c语言折行
c语言折行
k&r 习题,把较长的输入行折成短行,将习题答案搬来:
摘自k&r习题解答
#include<stdio.h> #define MAXCOL 20 #define TABINC 8 char line[MAXCOL]; void printl(int pos); int exptab(int pos); int findblnk(int pos); int newpos(int pos); main() { int c,pos; pos=0; while((c=getchar()) != EOF){ line[pos]=c; if (c==‘\t‘) pos=exptab(pos); else if(c==‘\n‘){ printl(pos); pos=0; }else if (++pos >= MAXCOL){ pos=findblnk(pos); printl(pos); pos=newpos(pos); } } } void printl(int pos) { int i; for(i=0;i<pos;++i) putchar(line[i]); if(pos>0) putchar(‘\n‘); } int exptab(int pos) { line[pos]=‘ ‘; for(++pos;pos<MAXCOL && pos%TABINC != 0;++pos) line[pos]=‘ ‘; if(pos<MAXCOL) return pos; else{ printl(pos); return 0; } } int findblnk(int p) { while(p>0 && line[p]!=‘ ‘){ --p; } if(p==0) return MAXCOL; else{ return p+1; } } int newpos(int pos) { int i,j; if(pos<=0 || pos>=MAXCOL) return 0; else{ i=0; for(j=pos;j<MAXCOL;++j){ line[i]=line[j]; ++i; } return i; } }
摘自k&r习题解答
c语言折行
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。