更新二进制文件的多个记录c ++

时间:2018-01-13 13:00:45

标签: visual-c++

我在单个文件读取中更新二进制文件记录的多个记录时遇到问题。

如果一条记录可以更新一条记录,同时更新多条记录,则程序运行在 无限循环。

第一个代码工作正常,但第二个代码存在问题:

第一个代码:

for (i = 0; i < xcnt; i++)  {
    fseek (ptr_fsecfile, 0, SEEK_SET);
    while(fread(&temp2, sizeof(temp2), 1, ptr_fsecfile)) 
        if (strcmp(temp2.SecName,xncmplst[i].SecName)==0) {
           xncmplst[i].SecCode = temp2.SecCode;
           xncmplst[i].CompId  = 100 * temp2.SecCode + temp2.SecCount +1;
           temp2.SecCount += 1;
           fseek (ptr_fsecfile, - sizeof(temp2), SEEK_CUR);
           fwrite(&temp2, sizeof(temp2), 1, ptr_fsecfile); 
           FlushFileBuffers(ptr_fsecfile);
           break;
        }
};

第二个代码:

fseek (ptr_fsecfile, 0, SEEK_SET);
while(fread(&temp2, sizeof(temp2), 1, ptr_fsecfile)) 
    for (i = 0; i < xcnt; i++)  
        if (strcmp(temp2.SecName,xncmplst[i].SecName)==0) {
           xncmplst[i].SecCode = temp2.SecCode;
           xncmplst[i].CompId  = 100 * temp2.SecCode + temp2.SecCount +1;
           temp2.SecCount += 1;
           fseek (ptr_fsecfile, - sizeof(temp2), SEEK_CUR);
           fwrite(&temp2, sizeof(temp2), 1, ptr_fsecfile); 
           break;
        };
FlushFileBuffers(ptr_fsecfile);

有人可以帮我解决这个问题吗?

0 个答案:

没有答案