2010-03-27 110 views
1

我在我的C程序中遇到問題,在使用fread()後,文件指針有時會到達文件的末尾。fread()行爲怪異

我會試着更好地解釋 - 代碼看起來是這樣的:

dummy = ftell(fp); 
fread(&buf, sizeof(unsigned char), 8, fp); 
dummy = ftell(fp); 

其中fp是一個文件指針,打開文件(「W +」打開一看,我用它作爲一個二進制文件,我知道我應該在那裏有一個「b」也一樣,但我聽說它不是真正重要的補充吧..), dummy只是一個unsigned long變量, 和bufunsigned char[8]

現在,在調試時,在ftellfread之前,dummy是262062 在ftellfread後,dummy是即使我只有「感動」 8個字節262640 ..

沒有任何人有任何想法可能是這個原因..? 感謝您的幫助:)

+0

在某些平臺上(例如MS Windows)需要fopen中的「b」,但對於您遇到的問題應該沒有關係。 你說buf「unsigned char buf [8]」,但你傳遞它爲&buf。那是不對的。要麼傳遞指向這些字節的指針的地址,要麼傳遞由編譯器中的錯誤導致的垃圾,而不是捕獲您不能獲取文字值的地址。如果它是第一個,那麼你必須有一個指向你實際聲明你的數組的地址的指針。 – nategoose 2010-03-29 01:48:57

回答

5

如果不使用b打開文件,ftell()不返回的道理,只是一種「餅乾」那只是fseek()有用的。那裏有很多不同的實現;檢查系統的手冊頁以瞭解更多信息。