執行以下程式碼,輸入字元後按 Enter,螢幕會不斷印出「燙」字(亂碼):
#include <stdio.h>
int main(void) {
char ch;
scanf_s("%c", &ch);
while (ch != 'g') {
printf("%c", ch);
scanf_s("%c", &ch);
}
return 0;
}
'a' 和 '\n'。第一次讀取取得 'a',第二次迴圈直接讀取殘留的 '\n',導致條件判斷與輸出異常。在格式字串前加空格:scanf_s(" %c", &ch),告知函式忽略前導空白(含換行)。
#include <stdio.h>
int main(void) {
char ch;
scanf_s(" %c", &ch); // 注意 %c 前有一空格
while (ch != 'g') {
printf("%c", ch);
scanf_s(" %c", &ch);
}
return 0;
}
while ((getchar()) != '\n'); // 讀取並丟棄殘留字元
char buf[10];
fgets(buf, sizeof(buf), stdin);
ch = buf[0];
「燙」字實為未初始化記憶體或控制字元顯示異常。核心解決之道在於正確處理輸入緩衝區的換行符,建議採用 scanf_s(" %c", &ch) 寫法。