1
我在我的C程序中遇到問題,在使用fread()
後,文件指針有時會到達文件的末尾。fread()行爲怪異
我會試着更好地解釋 - 代碼看起來是這樣的:
dummy = ftell(fp);
fread(&buf, sizeof(unsigned char), 8, fp);
dummy = ftell(fp);
其中fp
是一個文件指針,打開文件(「W +」打開一看,我用它作爲一個二進制文件,我知道我應該在那裏有一個「b」也一樣,但我聽說它不是真正重要的補充吧..), dummy
只是一個unsigned long
變量, 和buf
是unsigned char[8]
現在,在調試時,在ftell
的fread
之前,dummy
是262062 在ftell
的fread
後,dummy
是即使我只有「感動」 8個字節262640 ..
沒有任何人有任何想法可能是這個原因..? 感謝您的幫助:)
在某些平臺上(例如MS Windows)需要fopen中的「b」,但對於您遇到的問題應該沒有關係。 你說buf「unsigned char buf [8]」,但你傳遞它爲&buf。那是不對的。要麼傳遞指向這些字節的指針的地址,要麼傳遞由編譯器中的錯誤導致的垃圾,而不是捕獲您不能獲取文字值的地址。如果它是第一個,那麼你必須有一個指向你實際聲明你的數組的地址的指針。 – nategoose 2010-03-29 01:48:57