修改文件的某一数据
#include<stdio.h>#include<stdlib.h>
#include<string.h>
#define Byt sizeof(struct phone)
typedef struct phone
{
char num[7];
char name[12];
//struct phone *po;
}Qhone;
FILE *File;
void main()
{
void add();//添加
void inquire();//查询
void update();//更新
void delet();//删除
char ins;
printf("请输入指令(l 查询,u 更新,d 删 除,a添加): ");
scanf("%c",&ins);
if(ins=='l'||ins=='L')
{
inquire();
}
else if(ins=='u'||ins=='U')
{
update();
}
else if(ins=='d'||ins=='D')
{
delet();
}
else if(ins=='a'||ins=='A')
add();
else
{
getchar();
printf("输入指令错误,请重新输入。");
printf("\n");
main();
}
}
void add()//添加函数
{
Qhone *qh;
qh=(Qhone *)malloc(Byt);
if((File=fopen("E:\\电话本.txt","ab"))==NULL)
{
printf("打开外部文件出错");
exit(0);
}
printf("请输入名字与号码\n");
printf("名字: ");
scanf("%s",qh->num);
printf("号码: ");
scanf("%s",qh->name);
if(fwrite(qh,Byt,1,File)==1);
{
printf("添加成功!\n");
}
fclose(File);
}
void inquire()//查询函数
{
Qhone *qh;
char a[10];//数组a用来存放你输入的号码或名字
int rec=0;
if((File=fopen("E:\\电话本.txt","rb"))==NULL)
{
printf("打开外部文件出错");
exit(0);
}
printf("请输入你要查询的号码或者名字:");
scanf("%s",a);
qh=(Qhone *)malloc(Byt);//开辟大小为"Byt"的内存,返回值赋给Qhone类型指针“qh”。
for(;!feof(File);)
{
fread(qh,Byt,1,File);
if(strcmp(a,qh->name)==0||strcmp(a,qh->num)==0)
{
rec=1;
printf("%s\n%s\n",(*qh).num,(*qh).name);
break;
}
}
if(rec==0)
{
printf("查无此人!\n");
}
fclose(File);
}
void update()//更新函数
{
char a[10];
Qhone *qh;
int rec=0;
qh=(Qhone *)malloc(Byt);
if((File=fopen("E:\\电话本.txt","rb+"))==NULL)
{
printf("打开外部文件出错");
exit(0);
}
printf("请输入您要修改的名字或者号码: ");
scanf("%s",a);
for(;!feof(File);)
{
fread(qh,Byt,1,File);
if(strcmp(a,qh->name)==0||strcmp(a,qh->num)==0)
{
rec=1;
printf("请输入新的名字与号码.\n");
printf("名字: ");
scanf("%s",qh->num);
printf("号码: ");
scanf("%s",qh->name);
if(fwrite(qh,Byt,1,File)==1);
{
printf("修改成功!\n");
}
break;
}
}
if(rec==0)
{
printf("查无此人!\n");
}
fclose(File);
}
void delet()//删除函数
{}
更新函数不能达到预期效果,改了数据却对“文件”无效,求解答!