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

    技术2022-05-20  54

         来源于《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语句的使用上,没有参考代码中的简洁和高效

     


    最新回复(0)