我想讀取C 1個字節的二進制文件,每次搜索幾個小時後,我仍然無法獲取任何東西,但垃圾和/或seg故障。基本上二進制文件的格式是256個項目的列表,每個項目是1個字節(0到255之間的無符號整數)。我正在嘗試使用fseek和fread跳轉到二進制文件中的「索引」並檢索該值。我目前擁有的代碼:一次讀取一個二進制文件1個字節
unsigned int buffer;
int index = 3; // any index value
size_t indexOffset = 256 * index;
fseek(file, indexOffset, SEEK_SET);
fread(&buffer, 256, 1, file);
printf("%d\n", buffer);
此時此代碼給了我隨機垃圾數和seg錯誤。關於如何讓這個工作正確的任何提示?
一次讀取一個字節的文件會導致大量的I/O開銷。更好的方法是將整個文件讀入一個緩衝區(因爲它只有256字節)並單獨處理存儲在緩衝區中的每個字節。 – titaniumdecoy 2011-05-23 05:42:53
爲什麼不使用fgetc – Dirk 2011-05-23 05:43:36
@titaniumdecoy - 我相信I/O管理器會緩衝現代操作系統上的讀取。 – jww 2015-07-06 05:09:47