a⏎ b⏎ cdef⏎
程式碼:
for (int k = 0; k <= 5; k++) {
char c = getchar();
putchar(c);
}
| k | getchar 讀取 | 來源 | putchar 輸出 | 螢幕顯示 |
|---|---|---|---|---|
| 0 | 'a' | 鍵盤輸入 | 'a' | a |
| 1 | '\n' | 緩衝區殘留 | '\n' | (換行) |
| 2 | 'b' | 鍵盤輸入 | 'b' | b |
| 3 | '\n' | 緩衝區殘留 | '\n' | (換行) |
| 4 | 'c' | 鍵盤輸入 "cdef\n" 首字元 | 'c' | c |
| 5 | '\n' | 緩衝區殘留 (上次輸入的換行) | '\n' | (換行) |
getchar() 從 **stdin 緩衝區** 讀取單一字元,**換行符 '\n' 也是合法字元**,會被讀取並輸出。cdef⏎ 時,緩衝區實際存入 'c','d','e','f','\n'。但迴圈只跑 6 次 (k=0..5),第 4 次讀到 'c',第 5 次讀到 '\n',剩餘 'd','e','f' 留在緩衝區程式結束前未被讀取。putchar(c) 輸出字元 c 的 ASCII 碼對應字形,若為控制字元 (如 \n) 則執行控制動作 (換行)。a b c
(共三行可見字元,夾雜三次換行)