有关二进制文件操作的问题
事先定义了结构体例如:struct
{ char name[10];
char number[];
}classmate[10];
并且已经将数据写入了二进制文件
但是如何实现对任意一个结构体的某个数据进行修改,并写入二进制文件中中?
比如我要修改 名字是张三的number信息(张三的信息在文件中存在)
边读编写以前文件的数据怎么办?会不会丢失?
我现在要解决的问题是 一个文件中有了很多数据。我想通过找到一个人的姓名来修改他的其他数据,另外的数据不变,文件名也不变,请问这个如何实现。
我的想法如下,可是无法实现。我是新手,麻烦大神了
typedef struct
{
char name[10];
char nickname[10];
char province[10];
char qqnum[13];
char phonenum[13];
char university[22];
char profession[20];
char remark[20];
}Classmate;
Classmate addr[SIZE];
void rewrite()
{
FILE *fp;
int i;
char x[20],y[20];
if(!(fp=fopen("class_list","rb+")))
{
printf("Cannot open the file!");
exit(0);
}
printf("请输入你要找修改的名字:"); //用i找出那个人的地址
scanf("%s",&x);
for(i=0;fread(&addr[i],sizeof(Classmate),1,fp)!=0;++i)
{
if(strcmp(addr[i].name,x)==0) break;
}
printf("修改为:"); //修改那个人的nickname
scanf("%s",&y);
if(fwrite(&addr[i].name,sizeof(addr[i].nickname),1,fp)!=1)
{
printf("error");
exit (0);
}
else{printf("sucess!");}
fclose(fp);
}
[此贴子已经被作者于2017-12-5 13:50编辑过]