在我的程序中,我创建一个二进制文件包含结构(每个结构包含一个整数)...我在文件中放入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(&amp; x,sizeof(x),1,myfile)之后; ....它正确运行并输出: 1 2 3
任何人都可以帮助我吗?
答案 0 :(得分:0)
您只需要告诉程序将写入模式切换到读取模式,这样
fseek(myfile,0,SEEK_CUR);
如果你没有获得相同的结果而没有任何改变,那么这是必要的! 或者你可能会得到一个无限循环!