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

时间:2022-07-04 21:31:31

练习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;
         }
     }
 }