Ascii

EOT和EOF的區別

  • June 19, 2020

我知道 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 條件含義的理解。

引用自:https://unix.stackexchange.com/questions/323750