练习1-20:编写程序detab,将输入中的制表符替换成适当数目的空格,使得空格充满到下一个制表符终止位的地方,。假设制表符终止位的位置时固定的,比如每隔n列就会出现一个终止位。
这里要理解“制表符”和“制表符终止位”。“制表符”的作用是使得光标移动到下一个“制表符终止位”上。举个例子,假设制表符终止位是4、8、12、16......已经已经输入了10个字符,然后按一下Tab键,那么光标会移动到位置12上,同学们新建一个文本文档试一下就了解了。
代码如下:
1 #include<stdio.h> 2 3 #define TABSTOP 8 //在Console中,制表符终止位一般是8,16,24,32...... 4 5 int main() 6 { 7 int total = 0; //这一行总共输出了多少个字符 8 char c; //当前读到的字符 9 while( (c = getchar()) != EOF) 10 { 11 if( c == ‘\t‘) //如果读到的字符是制表符 12 { 13 int temp = total / TABSTOP; //计算输出的字符到目前为止占据了多少个TABSTOP 14 int nextLocation = (++temp) * TABSTOP; //下一个制表符终止位 15 int numOfSpace = nextLocation - total; //要输出多少个空格 16 for(int i= 1;i<=numOfSpace;++i) 17 { 18 putchar(‘ ‘); 19 ++total; 20 } 21 } 22 else if( c == ‘\n‘) 23 { 24 putchar(c); 25 total = 0; 26 } 27 else 28 { 29 putchar(c); 30 ++total; 31 } 32 } 33 }
时间: 2024-10-25 05:11:20