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;。