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