在我的程序中,我创建了一个二进制文件,其中包含结构体(每个结构体包含一个整数)...然后我在文件中放置了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);
}`
但是...我的标准输出文件的输出结果是: 1 2 2
应该是 1 2 3
但是...当我在fwrite(&x,sizeof(x),1,myfile);之后添加fseek(myfile,0,SEEK_CUR);时....它可以正确运行并输出: 1 2 3
有人能帮我吗???