读书人

fread的有关问题, 为何读了10多次, 文

发布时间: 2012-03-25 20:55:17 作者: rapoo

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

读书人网 >C语言

热点推荐