字符串級:puts / gets
- `puts(s)`:輸出字符串並**自動換行**,等價 `printf("%s\n", s)`。不能格式化數值。
- `gets(s)`:讀取一行(含空格)直到換行,**不保存換行符**。比 `scanf("%s")` 能讀含空格字符串。
**警告**:`gets` 無長度限制,極易緩衝區溢出,**C11 已移除**,實際開發用 `fgets(s, n, stdin)` 替代。
字符級:putchar / getchar / getch / getche
| 函數 | 回顯 | 等待回車 | 歸屬 | 典型用途 |
| putchar(ch) | — | — | 標準 C | 輸出單字符 |
| getchar() | 是 | 是 | 標準 C | 讀一行,取首字符 |
| getch() | 否 | 否 | conio.h (DOS/Windows) | 無回顯讀鍵、暫停 |
| getche() | 是 | 否 | conio.h | 即時回顯讀鍵 |
代碼示例
// 暫停等待任意鍵
printf("Press any key..."); getch();
// 讀一行取首字符
c = getchar(); putchar(c); getch(); // 第二個 getch 吃掉換行
總結
- 標準 C 僅有 `putchar`/`getchar`,跨平台可移植。
- `getch`/`getche` 為舊式 DOS/Windows 控制台專用,現代開發建議用平台無關庫(ncurses、SDL、Qt 等)。
- `gets` **禁用**,改用 `fgets` 指定緩衝區大小。