练习1-21 编写程序entab,将空格串替换成最少数量的制表符和空格,但要保持单词之间的间隔不变。假设制表符终止位的位置与练习1-20的detab程序的情况相同。当使用一个制表符或者一个空格都可以到达下一个制表符终止位时,选用哪种替换字符比较好。
制表符终止位,不太懂这个东西.google得知是空格代替制表符
1 #include <stdio.h> 2 #define TABINC 8 3 4 main() 5 { 6 int c, nb, nt, pos; 7 nb = 0; 8 nt = 0; 9 for(pos = 1; (c = getchar()) != EOF; ++pos) 10 if(c == ' ') 11 { 12 if(pos % TABINC != 0) 13 ++nb; 14 else 15 { 16 nb = 0; 17 ++nt; 18 } 19 }else 20 { 21 for( ; nt > 0; --nt) 22 putchar('\t'); 23 if(c == '\t') 24 nb = 0; 25 else 26 for( ; nb > 0; --nb) 27 putchar(' '); 28 putchar(c); 29 if(c == '\n') 30 pos = 0; 31 else if (c == '\t') 32 pos = pos + (TABINC - (pos - 1) % TABINC) - 1; 33 } 34 }