[问题] 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