我在单个文件读取中更新二进制文件记录的多个记录时遇到问题。
如果一条记录可以更新一条记录,同时更新多条记录,则程序运行在 无限循环。
第一个代码工作正常,但第二个代码存在问题:
第一个代码:
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);
有人可以帮我解决这个问题吗?