|
|
/*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);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
}
|