fread fwrite in loop-C中出错

fread fwrite in loop-C中出错,c,loops,fwrite,fread,C,Loops,Fwrite,Fread,我有一个文件IO系统,在那里我存储结构 在代码中,我希望逐个读取所有结构,并在每个结构中将变量pay设置为0,然后在文件中再次写入 long int recsize; recsize=sizeof(payment); f=fopen("C:\\HOTEL.DAT", "rb+"); if(f == NULL){ clrscr(); cprintf("File could not be opened!"); sleep(4); exit(0); } while(f

我有一个文件IO系统,在那里我存储结构 在代码中,我希望逐个读取所有结构,并在每个结构中将变量pay设置为0,然后在文件中再次写入

long int recsize;
recsize=sizeof(payment);
f=fopen("C:\\HOTEL.DAT", "rb+");
if(f == NULL){
    clrscr();
    cprintf("File could not be opened!");
    sleep(4);
    exit(0);
}

while(fread(&payment, recsize, 1, f) == 1){
            payment.pay=0;
            fseek(f, -recsize, SEEK_CUR);
            fwrite(&payment, recsize, 1, f);
 }

我遇到一个运行时错误,它不会更改所有结构中的变量,它会更改其中一些结构中的变量。我建议不要尝试将数据作为二进制blob读取,而是坚持读取单个字段。它更加健壮,尤其是如果你想改变你的结构的话。你的问题在哪里?解释错误请包括任何编译器错误/警告,并解释您收到的预期输出和实际输出。@555k我已添加错误,但有一个look@JonathonReinhart我添加了错误,看看你用的是哪种编译器?如果您使用VisualStudio,那么这将不起作用。您的代码是正确的,这将与gcc编译器的预期工作。我没有改变我的结构,我甚至尝试将其更改为正常的文件io,但这没有帮助