首页 > 代码库 > C语言练习1_21

C语言练习1_21

 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 }

技术分享

 

C语言练习1_21