You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
2.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*fseek()
范例一fseek(fp, 0L, SEEK_END);
解释文件指针定位到文件末尾偏移0个字节
范例二: fseek(fp,50L,0)或fseek(fp,50L,SEEK_SET);
解释其作用是将位置指针移到离文件头50个字节处。
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 50
void change(){
system("cls");
struct TX{
char name[10];
char jiguan[20];
char d1[20],d2[20];
char ema[30];
}inf [SIZE];
FILE *fp;
char a[20],b[20];
int i,flag=0,n,f=0;
fp=fopen("date.dat","rb");//打开二进制文件进行只读;
printf("\t\t\t\t\t\t请输入需要修改信息的姓名:");
scanf("%s",a);
for(i=0;fread(&inf[i],sizeof(struct TX),1,fp)==1;i++){
if(strcmp(a,inf[i].name)==0){//strcmp为比较函数若a=inf[i].name则返回0
printf("\t\t\t\t\t\t当前信息:\n");
printf("\t\t\t\t\t\t姓名:%s\n",inf[i].name);
printf("\t\t\t\t\t\t籍贯:%s\n",inf[i].jiguan);
printf("\t\t\t\t\t\t电话号码1%s\n",inf[i].d1);
printf("\t\t\t\t\t\t电话号码2%s\n",inf[i].d2);
printf("\t\t\t\t\t\t邮箱:%s\n\n\n",inf[i].ema);
flag=1;
break;
}
}fclose(fp);
fp=fopen("date.dat","rb+");
fseek(fp,i*sizeof(struct TX),0);//将文件指针移到需要改变数据的位置,否则会出错
if(flag==0)printf("\t\t\t\t\t\t输入错误!\n\n\n\n\n") ;
if(flag==1){
printf("\t\t\t请输入需要修改的信息1.姓名 2.籍贯 3.电话号码1 4.电话号码2 5.邮箱 6.不需要继续修改了\n");
printf("\t\t\t\t\t\t修改信息:");
for(;f==0;){
scanf("%d",&n);
switch(n){
case 1:printf("\t\t\t\t\t\t将姓名修改为:");
scanf("%s",inf[i].name);
printf("\n");break;
case 2:printf("\t\t\t\t\t\t将籍贯修改为:");
scanf("%s",inf[i].jiguan);printf("\n");break;
case 3:printf("\t\t\t\t\t\t将电话号码1修改为");
scanf("%s",inf[i].d1);printf("\n");break;
case 4:printf("\t\t\t\t\t\t将电话号码2修改为");
scanf("%s",inf[i].d2);printf("\n");break;
case 5:printf("\t\t\t\t\t\t将邮箱修改为:");
scanf("%s",inf[i].ema);printf("\n");break;
case 6:f=1;printf("\n\n\n");break;
}if(n!=6){
printf("\t\t\t\t\t\t还需修改的信息是:");
fwrite(&inf[i],sizeof(struct TX),1,fp);//将修改后的信息写入文件
}
}
fclose(fp);
}
}