fread的有关问题, 为何读了10多次, 文件指针就不动了
fread的问题, 为何读了10多次, 文件指针就不动了
代码如下:
这个是通过pe的thunk结构最后全为0来判断thunk结构树的, 循环里的fread读了10多次,文件指针就不动了, 所以一直读的是同一个数据, 那么就死循环了. 不明白是什么问题..希望解答, 感谢.
------解决方案--------------------
检查一下fread的返回值
------解决方案--------------------
代码如下:
- C/C++ code
//通过最后一个THUNK结构全为0判断THUNK数 for(int i = 0; i < nCount; i++) { int nThuns = 0; fseek(hFile, dOffsetThunk[i], SEEK_SET); fread(pItd, sizeof(IMAGE_THUNK_DATA), 1, hFile); for(;; nThuns++) { if(pItd->u1.AddressOfData == 0 && pItd->u1.Function == 0 && pItd->u1.ForwarderString == 0 && pItd->u1.Ordinal == 0) break; fread(pItd, sizeof(IMAGE_THUNK_DATA), 1, hFile); } dpThunks[i] = nThuns; }
这个是通过pe的thunk结构最后全为0来判断thunk结构树的, 循环里的fread读了10多次,文件指针就不动了, 所以一直读的是同一个数据, 那么就死循环了. 不明白是什么问题..希望解答, 感谢.
------解决方案--------------------
检查一下fread的返回值
------解决方案--------------------
- C/C++ code
if(pItd->u1.AddressOfData == 0 && pItd->u1.Function == 0 && pItd->u1.ForwarderString == 0 && pItd->u1.Ordinal == 0) break; memset(pItd, 0, sizeof(IMAGE_THUNK_DATA));//在这儿清空一下 fread(pItd, sizeof(IMAGE_THUNK_DATA), 1, hFile);