在输出终端中消除多余空格

     来源于《The C Programming Language》的一道习题(P13,PR1-9):

     编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替

     自己实现:

    

     #include <stdio.h>

     int main()
     {


         int c, flag;

         flag = 0;
         while((c = getchar()) != EOF)
                if(c == ' ' && flag == 0)
                {
                       putchar(c);
                      ++flag;
                }
                else if(c == ' ' && flag != 0)
                      ++flag;
                else
                {
                      flag = 0;
                      putchar(c);
                }


        return 0;


     }

     参考代码:

     #include <stdio.h>

     #define NONBLANK 'a'

     int main()
     {


          int c, lastc;

          lastc = NONBLANK;
          while((c = getchar()) != EOF)
          {
                 if(c != ' ')
                       putchar(c);
                 if(c == ' ')
                        if(lastc != ' ')
                               putchar(c);
                 lastc = c;
          }

          return 0;


      }   

      比较两段代码,发现自己的代码还是嫩了些:

      1. 对于flag变量,有点幻数的感觉(不知道这个比喻恰不恰当,哈哈),当别人在读代码时,不能一眼看出它的含义,而参考代码中

          使用的宏NONBLANK就不存在这方面的问题。

      2. 在程序主体结构中,对于判断条件的组织及if else语句的使用上,没有参考代码中的简洁和高效

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值