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

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