使用 scanf 輸入「10」與「twenty」兩個資料後,輸出卻出現垃圾數據。
%d 讀取整數,但使用者輸入非數字字串(如 "twenty"),scanf 會停止讀取並留下無效輸入在緩衝區。scanf 的回傳值表示成功讀取的項目數,若未檢查回傳值,就無法知道讀取是否成功。int a;
char b[20];
if (scanf("%d %19s", &a, b) == 2) {
printf("讀取成功: %d, %s\n", a, b);
} else {
printf("輸入格式錯誤\n");
}
或使用 fgets 讀取整行後再用 sscanf 或 atoi 轉換,能更好地處理錯誤輸入。
