#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN 100
struct contact_type
{
char name[10];
char hometown[10];
long number[2];
char mail[10];
}cont[LEN];
void show();
void chon(int n,FILE *fp,struct contact_type *p)//重新写入
{
FILE *fp1;
int i=0;
fp=fopen("con.dat", "r+");
fp1=fopen("linshi.dat", "w+");//读写新建一个临时文件
for(i=0;i<n;i++)
{
fprintf(fp1,"%s%s%ld%ld%s\n",(p+i)->name,(p+i)->hometown,(p+i)->number[0],(p+i)->number[1],(p+i)->mail);
}
fclose(fp);
fclose(fp1);
remove("con.dat");
rename("linshi.dat", "con.dat");
}
void revise(int n,struct contact_type *p,FILE *fp)//文件修改
{
int i=0,j=0;
char c[10];
printf("请输入想要修改的对象:\n");
scanf("%s",&c);
for(i=0;i<n;i++)
{
if(strcmp(c,(p+i)->name)==0)
{
j=i;
printf("修改前信息:姓名:%s 籍贯:%s 电话号码1:%ld 电话号码2:%ld 电子邮箱:%s\n",(p+i)->name,(p+i)->hometown,(p+i)->number[0],(p+i)->number[1],(p+i)->mail);
break;
}
}
printf("请输入修改后的信息\n");
scanf("%s%s%ld%ld%s",&(p+j)->name,&(p+j)->hometown,&(p+j)->number[0],&(p+j)->number[1],&(p+j)->mail);
printf("%s\n",c);
printf("%d\n",j);
if(fwrite(&p[j],sizeof(struct contact_type),1,fp)!=1)
printf("file write error\n");
fclose(fp);
chon(n,fp,p);
}
void save()//文件输入
{
int i=0;
FILE *fp;
if((fp=fopen("con.dat","web"))==NULL)
{
printf("can not open file\n");
return ;
}
for(i=0;i<LEN;i++)
if(fwrite(&cont[i],sizeof(struct contact_type),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
int creat(int i,struct contact_type cont[LEN])//文件输入
{
char c;
printf("请依次输入姓名,籍贯,电话号码1,电话号码2,电子邮箱(中间用空格隔开,以! ! ! ! !结束输入):\n");
do
{
scanf("%s%s%ld%ld%s",&cont[i].name,&cont[i].hometown,&cont[i].number[0],&cont[i].number[1],&cont[i].mail);
i=i+1;
}
while(c=getchar()!='!');
fflush(stdin);//清除键盘缓冲区
save();
return (i);
}
int main()
{
FILE *fp;
int i=0,n=0,m=0;
struct contact_type *p;
p=cont;
n=creat(i,cont)-1;
if((fp=fopen("con.dat","rb"))==NULL)
{
printf("can not open file\n");
exit(0);
}
for(i=0;i<n;i++)
{
fread(&cont[i],sizeof(struct contact_type),1,fp);
printf("姓名:%s 籍贯:%s 电话号码1:%ld 电话号码2:%ld 电子邮箱:%s\n",cont[i].name,cont[i].hometown,cont[i].number[0],cont[i].number[1],cont[i].mail);
}
revise(n,p,fp);
fclose(fp);
if((fp=fopen("con.dat","rb"))==NULL)
{
printf("can not open file\n");
exit(0);
}
for(i=0;i<n;i++)
{
fread(&cont[i],sizeof(struct contact_type),1,fp);
printf("姓名:%s 籍贯:%s 电话号码1:%ld 电话号码2:%ld 电子邮箱:%s\n",cont[i].name,cont[i].hometown,cont[i].number[0],cont[i].number[1],cont[i].mail);
}
return 0;
}