《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;   //计算输出的字符到目前为止占据了多少个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 }

 

转载于:https://www.cnblogs.com/wzm-xu/p/4199914.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值