古詩詞大全網 - 成語查詢 - C語言fread為什麽會讀取失敗呢?

C語言fread為什麽會讀取失敗呢?

fread是用來讀取文件的函數,其形式為

size_t fread ( void *buffer, size_t size, size_t count, FILE *file) ;

功能為從文件指針file中,每次讀取size長度數據,讀取count次,並將結果存到buffer中。

其出錯的可能原因包括:

1 文件沒有打開,或打開失敗。即文件指針非法。當文件不存在,或用戶對文件沒有讀權限,目標文件被占用等情況下,打開文件會失敗,這時file指針值為NULL。

2 文件打開時,並沒有指定讀屬性。

3 文件IO錯誤。如在文件打開後,文件被其它程序強制刪除,或取消可讀屬性等。

4 文件達到文件尾。如果文件已經讀到文件尾,不存在size*count字節的可讀數據,fread會出錯。

5 傳入的buffer非法。如buffer為空,或buffer擁有的空間不足以存儲size*count字節的數據,導致越界訪問。

以上即為常見的fread讀操作出錯的原因。實際出錯的時候,需要結合現象及代碼綜合分析才能得到準確的結果。