int i;
for (i = 0; getchar() != EOF; i++);
printf("There are %d chars", i);
abc + Enter → 計數 4 (含換行)。abc + Ctrl+D (Linux/Mac) 或 Ctrl+Z (Windows) → 計數 3,**但需獨立一行或行首輸入**才能觸發 EOF。abc^D (同行) → 視為普通字元,不觸發 EOF。\n),**整行**才會提交給進程 stdin。// 測試程式
int c, cnt = 0;
while ((c = getchar()) != EOF) {
printf("Read: %c (0x%02X)\n", isprint(c)?c:'.', c);
cnt++;
}
printf("Total: %d\n", cnt);
hello^D (同行) → 輸出 Read: h... Read: o,**無 EOF**,程式繼續等待。hello,程式印出 Total: 5 並繼續等待。| 平台 | EOF 觸發鍵 | 行緩衝預設 |
|---|---|---|
| Linux / macOS | Ctrl+D | 是 |
| Windows (cmd) | Ctrl+Z 後按 Enter | 是 |
| Windows (Git Bash / WSL) | Ctrl+D | 是 |
"quit"、固定筆數、檔案重導向 ./prog < input.txt)。理解「終端機行緩衝 + EOF 只在行首生效」的機制,才能正確設計與測試基於 getchar() 的互動式輸入程式。