書上提到「防止程式列印 Ctrl+Z 字符」,這到底是什麼字符?
Ctrl+Z 對應 ASCII 碼 0x1A (26),即 SUB (Substitute) 控制字元。 在 Windows/DOS 傳統中,它被約定為檔案結束標記 (EOF, End Of File)。
| 環境 | 輸入 Ctrl+Z 效果 |
|---|---|
| Windows 命令列 (cmd/PowerShell) | 標準輸入結束,程式讀取到 EOF |
| Linux/Unix 終端機 | 預設為 Ctrl+D (0x04, EOT) 代表 EOF;Ctrl+Z 發送 SIGTSTP 掛起前景進程 |
C 語言 getchar()/scanf | Windows 下讀到 0x1A 返回 EOF (-1);Linux 下讀到 0x04 返回 EOF |
int ch;
while ((ch = getchar()) != EOF) {
putchar(ch);
}
// Windows 下輸入文字,按 Ctrl+Z 然後 Enter 結束迴圈
「防止列印 Ctrl+Z」通常指在讀取輸入時檢測到 EOF 後不再輸出該控制字元,或在檔案處理時正確判斷結束條件。跨平台開發應使用標準庫的 EOF 宏,而非硬編碼 0x1A 或 0x04。