#include <stdio.h>
int getchar(void);
stdin)讀取單個字符unsigned char 轉 int),或 EOF (-1) 表示錯誤/文件結束getchar 才開始逐個讀取getchar 直接從緩衝區讀取,不再等待按鍵,直到緩衝區耗盡| 特性 | getchar() | getch()(非標準,conio.h) |
|---|---|---|
| 等待 Enter | 是(行緩衝) | 否(無緩衝,即時) |
| 回顯 | 是 | 否 |
| 返回值 | int(含 EOF) | int(無 EOF,出錯 -1) |
| 標準性 | ISO C 標準 | Windows/DOS 專用 |
| 典型用途 | 標準輸入處理 | 調試暫停、密碼輸入、遊戲按鍵 |
#include <stdio.h>
int main(void) {
int c;
while ((c = getchar()) != '\n')
putchar(c);
return 0;
}
int main() {
// ... 業務邏輯 ...
printf("Press Enter to exit...");
getchar(); // 等待用戶按鍵,防止控制台瞬間關閉
return 0;
}
注意: 若前序輸入留有換行符在緩衝區,此處 getchar() 會直接讀走而不阻塞。更稳健寫法:
while (getchar() != '\n'); // 清空緩衝區
getchar(); // 真正等待
int,不可用 char(無法區分 EOF 與 0xFF)stty raw、select/poll、ncurses 等)ferror(stdin) 區分 EOF 與讀取錯誤int c;
while ((c = getchar()) != EOF) {
if (c == '\n') {
// 行結束處理
} else {
// 普通字符處理
}
}
if (ferror(stdin)) {
perror("Input error");
}
掌握 getchar() 的緩衝行為與返回值語義,是處理控制台輸入、解析文本流、編寫交互式工具的基本功。