Ascii
EOT和EOF的區別
我知道 EOT 是 ASCII 程式碼 4,而 EOF 編碼為 -1(至少在 C 中)。在我發現 EOF 映射到 -1 之前,我認為它只是 EOT 的同義詞。為什麼EOF映射到-1而不是EOT?據我所知,它們都做同樣的事情,即終止文件流。我能辨別的唯一區別是 EOT 還會終止 bash shell 中的命令。我想描述這兩個程式碼之間的精確技術差異。
通常,EOF 不是字元;這是一個角色的缺席。
如果程序在具有預設設置的規範模式下在終端上執行(即僅使用 stdio 的純 C 程序),它將永遠不會看到 ASCII 字元 EOT。終端驅動程序辨識該字元並創建一個 EOF 條件(在低級別是 0 返回值
read()
)。stdio 庫將該 EOF 條件轉換為適用於所討論函式的返回值(用於 的EOF
宏、用於getchar()
的空指針fgets()
等)宏的數值
EOF
與 C 庫中的任何地方無關,它不應該影響您對 EOF 條件含義的理解。