2010-06-15 261 views
2

EOF是一個位於每個文件末尾的特殊字節序列,還是它有點像內核通知的異常(中斷)?什麼是EOF?

回答

11

很久以前在DOS機器上它曾經被^Z表示,但是現在它是內核到達文件末尾並且當它試圖進一步讀取時通知程序。

+1

MSDOS'^ Z'事件是來自CP/M的宿醉,其中文件總是128字節長的倍數。對於文本文件,128字節的最後一個塊用'^ Z'填充。 – msandiford 2010-06-15 06:10:27

+0

^Z仍然在MS-DOS(或Windows命令提示符)中用於標記文本文件的結尾。例如,當您使用COPY命令加入二進制文件時,這一點很重要。您必須使用/ b標誌,否則該文件在第一個^ Z字符處被截斷。 – PauliL 2010-06-15 07:26:04

1

我已經使用ASCII EOF字符將數據文件分隔成一個人類可讀的標題,後面跟着二進制數據。這使機械工程師從測試中得到的所有內容都保存在一個文件中,同時保持足夠小以適應軟盤。 (這是幾年前的!)EOF字符告訴大多數文本顯示程序停止。任何想要快速瀏覽文件頭的人都可以在命令行中使用「打印」命令(就是這個樣子?)。

大多數情況下,EOF角色並未在文件中使用,至少在我居住的世界的一小部分地區。實際上,除了NUL,ESC和CR/LF之外,沒有任何ASCII控制字符有任何用處。

EOF可能在某些流協議中起到某種作用,但那不在我的專業知識範圍之內,所以我把它留給其他人來解決。

+0

只是爲了強調一點:在該文件格式中,EOF將在十幾行文本之後出現在開始附近。 – DarenW 2010-06-15 05:49:13

+2

有沒有這樣的東西在EOF在ASCII - 有ETX(文本結束 - CTRL-C)和EOT(傳輸結束 - CTRL-D)和EM(介質結束 - CTRL-Y),甚至ETB(傳輸塊結束 - ctrl-W)但不是EOF。 – 2010-06-15 06:13:02

0

EOF是C stdio庫返回的特殊代碼,表示沒有更多的數據要從FILE中讀取。不同的操作系統有自己的方式來記錄文件的大小/結尾以及將它們返回給用戶程序的方式,這將通過該操作系統上的C標準庫實現轉換爲EOF返回碼。

相關問題