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

C 語言 while 循環輸入 q 無法退出的正確寫法

     編輯:程式設計疑難解答

問題代碼

int ch;
while(ch != 'q') {
    ch = getchar();
    // 處理邏輯
}
// 輸入 q 後循環不結束

原因分析

  • getchar() 讀取到 'q' 後,變數 ch 更新為 'q',但循環條件判斷在下一次迭代才生效。
  • 若循環體內無 break,輸入 q 只會讓本次迭代結束,隨後進入下一次迭代,再次呼叫 getchar() 等待新輸入。

正確寫法

int ch;
while ((ch = getchar()) != EOF) {
    if (ch == 'q') break; // 立即退出循環
    // 處理其他字符
}

或使用 do-while:

int ch;
do {
    ch = getchar();
    if (ch == 'q') break;
    // 處理邏輯
} while (ch != EOF);

關鍵點

  • 在循環內部判斷輸入值並 break,而非依賴循環條件延遲判斷。
  • 注意處理 EOF(Windows 為 Ctrl+Z,Linux/Mac 為 Ctrl+D)。
  • 若需忽略換行符,可加入 if (ch == '\n') continue;。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved