首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C getchar/putchar 迴圈多輸出一字元:迴圈內重複呼叫 getchar

     編輯:程式設計綜合問答

程式碼在 while 迴圈內再次呼叫 getchar(),導致每次迴圈**讀取兩個字元** (一次在迴圈條件,一次在迴圈體),輸出字元數比輸入多一倍。

錯誤程式碼

c = getchar();
while (c != '\n') {
    c = trans(c);
    printf("%d", c);
    getchar(); // 多餘:吞掉下一個字元
}

修正版

int c;
while ((c = getchar()) != '\n' && c != EOF) {
    c = trans(c);
    putchar(c); // 或 printf("%c", c);
}
putchar('\n');

關鍵點

  • getchar() 每次呼叫**消耗一個字元**,不可重複呼叫。
  • 迴圈條件直接賦值 (c = getchar()) 同時完成讀取與判斷。
  • putchar(c) 比 printf("%d", c) 更語意清晰 (輸出字元而非整數)。
  • 檢查 EOF 以應對重導向輸入檔案結束。

理解 getchar 會移動輸入流指標,是避免此類「多讀/少讀」錯誤的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved