gpt4 book ai didi

c - 在 C 中使用 fwrite() 的 fseek() 之后,fread() 不工作

转载 作者:太空狗 更新时间:2023-10-29 15:42:23 24 4
gpt4 key购买 nike

在我的程序中,我制作了一个包含结构的二进制文件(每个结构包含一个整数)...我在文件中放入了 3 个结构...我想先创建文件...然后关闭它...然后以“rb+”模式重新打开它...我想从文件中读取结构并更改其值(成员数据)并以这种方式在同一文件中重写它:

#include <stdio.h>
main()
{
int i;

struct
{
int data;
}x;

FILE* myfile=fopen("d:\\text.bin","wb");

for(i=1;i<4;i++)
{
x.data=i;
fwrite(&x,sizeof(x),1,myfile);
}

fclose(myfile);

myfile=fopen("d:\\text.bin","rb+");

for(i=0;i<3;i++)
{
fread(&x,sizeof(x),1,myfile);
printf("%d\n",x.data);
fseek(myfile,-sizeof(x),SEEK_CUR);
x.data=2*x.data;
fwrite(&x,sizeof(x),1,myfile);
}

fclose(myfile);

}`

但是...我在 stdout 文件中的输出是:1个2个2

应该是1个2个3

但是...当我添加 fseek(myfile,0,SEEK_CUR);在 fwrite(&x,sizeof(x),1,myfile);.... 它正确运行并输出之后:1个2个3

谁能帮帮我???

最佳答案

你只需要告诉程序把写模式切换到读模式就可以了

fseek(myfile,0,SEEK_CUR); 

这是必要的,如果你不这样做,你只会得到相同的结果,根本没有任何变化,否则你可能会陷入无限循环。

关于c - 在 C 中使用 fwrite() 的 fseek() 之后,fread() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30526332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com