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