putchar(ch); // 等價於 printf("%c", ch)
char c = 'B';
putchar(c); // 字符變量
putchar('\x42'); // 十六進制轉義
putchar(0x42); // 直接用 ASCII 碼值
| 函數 | 回顯 | 等待回車 | 返回值 |
|---|---|---|---|
| getch() | 否 | 否 | 讀到的字符 |
| getche() | 是 | 否 | 讀到的字符 |
| getchar() | 是 | 是 | 第一個字符 |
main() {
char c, ch;
c = getch(); putchar(c); // 無回顯輸入,再輸出
ch = getche(); putchar(ch); // 有回顯輸入,再輸出(字符顯示兩次)
}
printf("Press any key to continue...");
getch(); // 等待任意鍵,不回顯
main() {
char c = getchar(); // 輸入 "ABC" + 回車
putchar(c); // 僅輸出 'A'
getch();
}
連續 scanf("%c") 讀取字符時,回車符殘留導致問題。解決:
scanf("%c", &c1);
fflush(stdin); // 清除輸入緩衝區
scanf("%c", &c2);
注意:fflush(stdin) 在標準 C 中行為未定義,Turbo C 支持。跨平台代碼應用循環讀取清空緩衝區。