首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

fread的有关问题, 为何读了10多次, 文件指针就不动了

2012-03-25 
fread的问题, 为何读了10多次, 文件指针就不动了代码如下:C/C++ code//通过最后一个THUNK结构全为0判断THU

fread的问题, 为何读了10多次, 文件指针就不动了
代码如下:

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); 

热点排行