删除每个输入行末尾的空格,制表符,并删除全空格行

     源自《The C Programming Language》P22 pr1-18:

 

     编写一个程序,删除每个输入行末尾的空格,制表符,并删除完全是空格的行

 

     代码:

 

    

 

 

     分析:

 

     1,   针对输入的字符串(line)的倒数第二个字符是否为'/n',分情况进行消除字符串末尾的空格及制表符处理。

 

     2,   针对处理后的字符串(post_line[n])的倒数第二个字符是否为'/n',在打印的时候分情况进行处理。

 

     3,   getLine函数:读入一行字符后,将输入缓冲区清空,这样当超过字符数组line的界限的字符会被清除掉,

                                如果不清空,则在下次调用getLine函数时,上次超出的字符部分会被getchar函数直接

                                读到这次的line字符数组中,造成混乱。

 

     参考代码:

 

    

 

 

     分析:

 

     1,  对比于自己实现的代码,发现这段代码简洁多了,思路也很清晰和易懂。

 

     2,  有点缺憾之处:(a),每次输入一行字符,处理结果会紧接着下一行输出,不太容易观看,

                               而上面那段代码就不存在这个问题。

                               (b),参考代码没有考虑一行字符串没有'/n'的情况,这和它将MAXLINE设成1000有关,

                                      极端的情况是一个字符串就是1000个字符,并且倒数第二字符不是'/n',如果MAXLINE

                                      的值比较小的话,这个问题就凸现出来了,相比于此,上段代码考虑了这种情况。

                                      修改remove函数:

                                      while(s[i] != '/n' && i < MAXLINE - 2)

                                                ++i;

                                      if(i != MAXLINE - 2)

                                                 --i;

                                      while(i >= 0 && (s[i] == ' ' || s[i] == '/t'))

                                                 --i;

                                       if( i >= 0 && i < MAXLINE - 2)

                                       {

                                                 ++i;

                                                 s[i] = '/n';

                                                 ++i;

                                                 s[i] = '/0'; 

                                       }   

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值