怎么改正这个错误?请各位看看
#define N 100#define SIZE 30
#include<stdio.h>
#include<string.h>
#include<conio.h>
struct student
{ char num[SIZE];
char name[SIZE];
char tel[SIZE];
};
//函数声明
void myprint(); //显示菜单
int mycreat(struct student*p,int n); //输入通讯录
void mydisplay(struct student *p,int n); //显示通讯录
void mysearch(struct student*p,int n); //查找
int myadd(struct student *p, int n); //增加通讯录
int mydelete(struct student*p, int n); //删除
void sch_num(struct student *p,int n); //按学号查找
int loadinfo(struct student *p, int n); //载入通讯录信息
int saveinfo(struct student *p,int n); //保存通讯录信息
void main()
{ //文件定义
char choose,yes_no;
struct student record[N]; //存放通讯录信息,共100条
int total=0,flag; //通讯录总数
total=loadinfo(record,N); //从文件读取记录信息,不超过100条
do
{
myprint(); //显示菜单
printf(" Please select:");
choose=getche();
switch(choose)
{
case'1':
total= mycreat(record,total);
break;
case'2':
mydisplay(record,total);
break;
case'3':
mysearch(record,total);
break;
case'4':
total=myadd(record,total);
break;
case'5':
total=mydelete(record,total);
break;
case '6':
flag=saveinfo(record,total);
if(flag==1)
printf(" Save successful! ");
else
printf(" Save failure! ");
break;
case'0':
printf(" ");
break;
default:
printf(" %c is a illegal option ! ",choose);
}
if(choose=='0') break;
printf(" Can you contiune select(Y/N)? ");
do
{ yes_no=getch();
}
while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
}while(yes_no!='Y'||yes_no!='y');
}
//显示菜单信息
void myprint()
{ //clrscr();
printf(" ");
printf(" ");
printf("请输入选项编号(0--6) ");
printf(" 1---批量输入通讯录 ");
printf(" 2---显示通讯录 ");
printf(" 3---查询通讯录 ");
printf(" 4---添加通讯录 ");
printf(" 5---删除通讯录 ");
printf(" 6---保存通讯录 ");
printf(" 0---退出 ");
printf(" ");
}
//批量输入学生信息
int mycreat(struct student *p,int n)
{
int i=0;
int m;
//clrscr();
printf("添加前的记录,共有 <%d>个 : ",n);
printf(" 记录号 学号 姓名 电话号码");
i=0;
while((i<n)&&(strcmp(p->num,"")!=0))
{
printf("%d %s %s %s ",i+1, p->num,p->name,p->tel);
i++;
p++;
}
printf(" How many students do you want to input(<%d):",N-n);
scanf("%d",&m);
i=0;
while(i<m)
{
printf(" ");
printf("please enter the %dth record: ",i+1);
printf("学号:");
do
{
gets(p->num);
}while(strcmp(p->num,"")==0);
printf("姓名:");
gets(p->name);
printf("电话号码:");
gets(p->tel);
p++;
i++;
}
return m+n;
}
//显示学生信息
void mydisplay(struct student *p,int n)
{
/*clrscr();*/
int i=0;
printf(" 记录号 学号 姓名 电话号码 ");
while(i<n)
{
printf("%d %s %s %s ",i+1, p->num,p->name,p->tel);
p++;
i++;
}
}
void mysearch(struct student *p, int n)
{
mydisplay(p,n);
sch_num(p,n);
}
//按学号查询
void sch_num(struct student *p,int n)
{
int i,flag=0;
char nm[10];
printf(" 请输入要查询记录的学号:");
gets(nm);
for(i=0;i<n;i++)
if(strcmp(nm,p[i].num)==0)
{
printf(" 记录号 学号 姓名 电话号码 ");
printf("%d %s %s %s ",i+1,p[i].num,p[i].name,p[i].tel);
flag=1;
}
if(flag==0)
printf("无此人! ");
}
//增加学生信息
int myadd(struct student *p, int n)
{
int i=0;
char c;
struct student t,*q;
//clrscr();
printf("添加前的记录:");
printf(" 记录号 学号 姓名 电话号码 ");
i=0;
q=p;
while(i<n) //显示原有记录信息
{
printf("%d %s %s %s ",i+1,q->num,q->name,q->tel);
i++;
q++;
}
do
{
printf("请输入新记录的学号");
do
{
gets(t.num);
} while(strcmp(t.num,"")==0); //学号不能为空
printf("请输入新记录的姓名:"); gets(t.name);
} while(strcmp(t.num,"")==0); //学号不能为空
printf("请输入新记录的姓名:"); gets(t.name);
printf("请输入新记录的电话号码:"); gets(t.tel);
for(i=0;i<n;i++)
{
if(strcmp(t.num,(p+i)->num)==0 || strcmp(t.tel,(p+i)->tel)==0)
{ printf("学号或电话号码重复,要重新输入吗(Y/N)?");
c=getche();
putchar(' ');
break;
}
if(i==n) //找到最后,没有重复
{
*(p+i)=t;
printf("添加后的记录: ");
printf(" 记录号 学号 姓名 电话号码 ");
i=0;
for(i=0;i<n+1;i++)
printf("%d %s %s %s ",i+1,(p+i)->num,(p+i)->name,p[i].tel);
break;
}
}
return n+1;
}
//删除学生信息
int mydelete(struct student *p, int n)
{
int i,x;
char nm[10];
// clrscr();
printf("删除前的记录: ");
printf(" 记录号 学号 姓名 电话号码 "); i=0;
for(i=0;i<n;i++)
printf("%d %s %s %s ",i+1,p[i].num,p[i].name,p[i].tel);
printf(" 请输入要删除记录的学号:");
gets(nm);
for(x=0; x<n; x++)
if(strcmp(nm,p[x].num)==0)
break;
if(x<n) //说明提前结束循环,找到人
{
for(i=x;i<n-1;i++)
{
p[i]=p[i+1];
}
printf("删除后的记录: ");
printf(" 记录号 学号 姓名 电话号码 "); i=0;
for(i=0;i<n-1;i++)
printf("%d %s %s %s ",i+1,p[i].num,p[i].name,p[i].tel);
}
else
printf("无此人 ");
return n-1;
}
//载入通讯录信息
int loadinfo(student *p, int n)
{
FILE *fp;
int i,all=0;
char filename[30]="txl.txt";
fp=fopen(filename,"r");
if(fp==NULL)
{
return 0;
}
fscanf(fp,"%d ",&all); //读取记录总数
for(i=0; i<all; i++) //读取记录信息
{
fscanf(fp,"%s %s %s ",p[i].num,p[i].name,p[i].tel);
}
fclose(fp); //关闭文件
return all;
}
int saveinfo(student *p,int n)
{
FILE *fp;
int i,all=0;
char filename[30]="txl.txt";
fp=fopen(filename,"w");
if(fp==NULL)
{
printf(" ***不能建立或打开文件%s!***",filename);
return 0;
}
fprintf(fp,"%d ",n);
for(i=0; i<n; i++)
fprintf(fp,"%s %s %s ",p[i].num,p[i].name,p[i].tel);
fclose(fp);
return 1;
}