首页 > 代码库 > 《C程序设计语言》读书笔记----习题1-20

《C程序设计语言》读书笔记----习题1-20

练习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;   //计算输出的字符到目前为止占据了多少个TABSTOP14             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         else28         {29             putchar(c);30             ++total;31         }32     }33 }

 

《C程序设计语言》读书笔记----习题1-20