在输出终端中消除多余空格
???? 來源于《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語句的使用上,沒有參考代碼中的簡潔和高效
轉載于:https://www.cnblogs.com/roma823/archive/2011/07/10/2102308.html
總結
以上是生活随笔為你收集整理的在输出终端中消除多余空格的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: YY:马化腾的大漏招
- 下一篇: 敏捷?TOC