檔案IO EOF問題

2021-10-06 16:01:03 字數 1078 閱讀 6281

有人認為eof是檔案的最後乙個字元,表示檔案結束。實際上eof只是乙個值。在某些系統中,的確有這種表示檔案結束的字元。但是話說回來,在現在的windows中,並沒有。

由此可見,eof只是乙個巨集定義的數值,為了作為函式的返回值。數值很特殊,是-1。以下面的程式片段為例。

char c;

file *fp;

c=getc

(fp)

;

由此可見,呼叫完getc函式之後,直接進行賦值。為了表現已經「到達檔案末尾」這個特殊情況,需要有乙個特殊的返回值。特殊在需要不同於普通的返回值,以免混淆。在char中,只有正數可以被正常使用,所以這個返回值就可以是-1,即eof的值是-1。但是在二進位制檔案中,-1是乙個正常的值,因此在二進位制檔案中就不能武斷地判斷,需要用其它方法,在後文會詳細介紹。

在中,可以看到對它的巨集定義,如圖1。

圖1中對eof的巨集定義

下面我們從實際測試來證明。圖2為待測試的文字文件(只有「1」,沒有換行符等)。

圖2用記事本開啟abc.txt

使用uedit對文件進行檢視,發現並沒有多餘的字元,也證明了沒有所謂的eof符。如圖3。

圖3用uedit開啟abc.txt

也可以從屬性中的大小發現只有乙個字元,即只有乙個"1",也可以證明這個情況。如圖4。

圖4檢視abc.txt的「屬性」

檔案io兄弟文章:【檔案io】eof問題

【檔案io】換行符問題

【檔案io】常用函式詳解

小檔案問題

5.2 小檔案問題 小檔案是指檔案size小於hdfs上block大小的檔案。這樣的檔案會給hadoop的擴充套件性和效能帶來嚴重問題。首先,在hdfs中,任何block,檔案或者目錄在記憶體中均以物件的形式儲存,每個物件約佔150byte,如果有1000 0000個小檔案,每個檔案占用乙個bloc...

檔案路徑問題

遇到的問題 1 原型部署時,在電腦上瀏覽的時候挺好,但是發布到伺服器上之後就開始報錯,一般都是在哪兒哪兒找不到某某檔案,或者是載入不出來。2 設定好的html檔案,換乙個資料夾就會報錯。3 找到原先乙個正確的原型,照葫蘆畫瓢吧,裡面的有兩個問題 有的路徑是右斜槓 有的是左斜槓 路徑的開端有的寫乙個點...

共享檔案問題

症狀 主要表現在win7中用vm11安裝的ubuntu14.04中,安裝完自帶的vmware tools之後,mnt hgfs 中沒有前面已經設定好的共享資料夾。仔細檢視了安裝過程,發現在編譯vmhgfs module.o的時候出現了錯誤。國內 上也很少有關於這類問題的說明,查到一篇文章 鏈結 有說...