[問題] fscanf連續讀取檔案同一位置

作者: frozen792   2014-12-26 11:13:04
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Win32 Qt Creator MinGW32
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)

問題(Question):
程式會讀取一 binary file 讀取裏面的資料並 print 出來
目前 for 迴圈內的狀況如下:
... FAC1
... FC91
index 累加到 2342 後讀到的資料為 FB81
index 累加到 2344 後讀到的資料為 FB41
... FB41
... FB41
但是之後讀到的資料全部都是 FB41
不瞭解,為何 fscanf 在 FB41 前可以正常讀取
但是之後卻無法正常讀取…
煩勞各位版友賜解
餵入的資料(Input):
input file 為連續的 binary file
檔案大小為 294544
預期的正確結果(Expected Output):
預期 FB41 之後的資料應該是其他資料
而不應該一直都是 FB41
錯誤結果(Wrong Output):
如上所述
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/XsbHqY4T ←完整的 code,fscanf 有改成 fread
long file_size = 294544;
long i = 0;
for( i = 0 ; i < file_size ; i += 2 ) {
fscanf( inputFilePtr, "%c%c", &raw_data[0], &raw_data[1] );
printf( "%02X%02X\n", raw_data[1], raw_data[0] );
}
補充說明(Supplement):
作者: EdisonX (卡卡獸)   2014-12-26 12:37:00
把 fscanf 的傳回值拉出來看一下。
作者: frozen792   2014-12-26 13:44:00
fscanf 回傳值是 2不過讀到 FB41 時,fscanf 回傳值是 -1
作者: PkmX (阿貓)   2014-12-26 14:39:00
如果可以的話把檔案和完整程式碼po上來吧 看不出問題出在哪話說為何不用fread?
作者: frozen792   2014-12-26 14:42:00
剛剛發現 input file 裏有多個 EOF 需要處理http://codepad.org/XsbHqY4T ←完整的code
作者: PkmX (阿貓)   2014-12-26 15:03:00
fopen的時候mode加上b試試看吧?
作者: frozen792   2014-12-26 15:48:00
感謝!原來還要加這個,功能正確了!

Links booklink

Contact Us: admin [ a t ] ucptt.com