我这程序 不知道不知道哪根筋出问题了 急需高手检查!!!! 运行成功过几十次了 有时候突然又运行不了了 但 编译成功 (当然里面有个函数有点问题就是找不出来帮忙)c++(warning:unknow escape sequence??) typedef struct { char name[10]; int number; /* 编号*/ int age; unsigned long int bir; /*生日*/ unsigned int quhao; /*区号*/ long int num; /*电话号码*/ char addrs[15]; }FRIEND;
#include<stdio.h> #include<string.h> #define MAX 100 void friend(); void showfrie(); main() { printf(">>>>>欢迎你使用**枫叶飘零~寒冰**通讯录<<<<<<\n"); printf(">>>>>>该通讯录的部分信息如下:\n"); printf("*****************************\n"); showfrie(); printf("*****************************\n"); friend(); getch();
}
void friend() { void infrie(); void finfrie(); void modifrie(); void delfrie(); int a; do { printf("操作代码: 1: 添加 2:修改 3:查找 4:删除 0:返回\n"); scanf("%d",&a); switch(a) { case 1: infrie(); break; case 2: modifrie(); break; case 3: finfrie(); break; case 4: delfrie(); break; case 0: break; default : printf("\**选择错误**\n");break; } } while(a!=0); }
void infrie() { FILE *fp; FRIEND frie; if((fp=fopen("friend.dat","ab+"))==NULL) if((fp=fopen("friend.dat","wb+"))==NULL) { printf("\t>>不能建立friend.dat的文件\n"); return; } printf("****请按照显示输入新的信息:\n"); printf("请输入编号:\n"); scanf("%d",&frie.number); printf("~~请输入姓名:\n"); scanf("%s",frie.name); printf("**请输入年龄:\n"); scanf("%d",&frie.age); printf("**请输入生日:\n"); scanf("%ld",&frie.bir); printf("**请输入区号:\n"); scanf("%d",&frie.quhao); printf("**请输入电话号码:\n"); scanf("%ld",&frie.num); printf("**请输入地址:\n"); scanf("%s",frie.addrs); rewind(fp); fwrite(&frie,sizeof(FRIEND),1,fp); fclose(fp); }
void modifrie() { FILE *fp; FRIEND frie,newfrie; int i; int number; if((fp=fopen("friend.dat","rb+"))==NULL) { printf("\t>>不能打开friend.dat文件\n"); return; } fseek(fp,0,2); if(ftell(fp)>0) { rewind(fp); printf(" 请输入要修改的好友对应的编号:"); scanf("%d",&number); for(i=0;!feof(fp)&&fread(&frie,sizeof(FRIEND),1,fp)==1;i++) if(frie.number==number) break; if(feof(fp)) { printf("\t>>没有%d这个好友\n",number); return; } printf("********请按照显示输入新的信息\n");
printf("**请输入姓名:\n"); scanf("%s",newfrie.name); printf("**请输入年龄\n:"); scanf("%d",&newfrie.age); printf("**请输入生日:\n"); scanf("%ld",&newfrie.bir); printf("**请输入区号:\n"); scanf("%d",&newfrie.quhao); printf("**请输入电话号码:\n"); scanf("%ld",&newfrie.num); printf("**请输入地址:\n"); scanf("%s",newfrie.addrs);
newfrie.number=number; fseek(fp,-sizeof(FRIEND),1); fwrite(&newfrie,sizeof(FRIEND),1,fp); /*覆盖前记录*/ fclose(fp); } else {printf("\t>>无记录\n"); fclose(fp); } }
void finfrie() /*查找*/ { FILE *fp; FRIEND frie; int number; if((fp=fopen("friend.dat","rb"))==NULL) { printf("\t>>不能打开friend.dat文件\n"); return; } fseek(fp,0,2); if(ftell(fp)>0) { printf(">>>>>>请输入好友对应的编号:\n"); scanf("%d",&number); rewind(fp); while(1) { fread(&frie,sizeof(FRIEND),1,fp); if(feof(fp)||(frie.number==number)) break; } if(!feof(fp)) printf(" 该好友的记录信息: 姓名是%s\n年龄是%d\n生日是%ld\n区号+电话号码是0%d%ld\n地址是%s\n", frie.name,frie.age,frie.bir,frie.quhao,frie.num,frie.addrs); else printf("\t>>查无此编号对应的好友\n"); } else printf("\t>>无任何记录\n"); }
void delfrie() { int i,j,n; FILE *fp; FRIEND frie[MAX]; int number; if((fp=fopen("friend.dat","rb"))==NULL) { printf("\t>>不能打开friend.dat文件\n"); return; }
fseek(fp,0,2); if(ftell(fp)>0) { rewind(fp); for(n=0;!feof(fp)&&fread(&frie[n],sizeof(FRIEND),1,fp);n++); printf("******请输入要删除的好友的编号:\n"); scanf("%d",&number); for(i=0;i<n&&frie[i].number!=number;i++); if(i>=n) {printf("\t>>没有%d对应好友的信息\n",number); return;} fclose(fp); if(n>=1) { for(j=i;j<n-1;j++) frie[i]=frie[i+1]; fp=fopen("friend.dat","wb"); for(i=0;i<n-1;i++) fwrite(&frie[i],sizeof(FRIEND),1,fp); fclose(fp);
} else {printf("\t>>无任何记录\n"); fclose(fp);} } }
void showfrie() { FILE *fp; FRIEND frie[MAX]; int n,m; if((fp=fopen("friend.dat","rb"))==NULL) { printf("\t不能打开friend.dat文件\n"); return; } fseek(fp,0,2); if(ftell(fp)>0) { rewind(fp); for(n=0;!feof(fp)&&fread(&frie[n],sizeof(FRIEND),1,fp);n++) ; for(m=0;m<n;m++) { rewind(fp); fread(&frie[m],sizeof(FRIEND),1,fp); printf(">>>>>>%s对应的编号是%d",frie[m].name,frie[m].number); } fclose(fp); } else {printf("\t无任何记录\n"); fclose(fp) ;} 有可以改进的地方 请各位高手帮忙指导一下!!!!!!