关于c语言问题改错 程序出了一个错运行不了 请各位帮忙
我程序输完了有一个错误怎么都找不出来,请大神们帮忙找一下并改正,谢了!!是关于学生籍贯信息的
每个学生信息包括:学号、姓名、性别、籍贯、年龄。
主要功能:
1、信息录入;
2、信息浏览;
3、信息查询(a 按籍贯查询 b按年龄查询(输入某个年龄,显示该年龄的学生信息))
4、信息排序(a 按年龄排序(从高到低)b 按姓名排序 )
5、信息统计(统计用户要求的某籍贯的学生人数)
6、信息删除(删除指定学号的学生籍贯信息)
7、 保存信息(把当前的结构体数组内容保存到文件student.txt中)
8、 读取信息(从文件student.txt中把结构体数组的内容读到结构体数组中,并显示)
0、 退出
#include<stdio.h>
#include<stdafx.h>
#include <string.h>
#include <stdlib.h>
#include <cstring>
#define N 5
struct student
{
int number,age;
char name[20],sex[10],address[30];
}em[N];
int a=N ;int exit();
int *p=&a;
int main()
{
void search();
void search_name();
void search_age();
void search_number();
void load();
void display();
void del();
void input();
void add();
void save();
int n;
printf("\n");
printf(" ******************学生信息管理****************\n");
printf("\n");
printf(" 1.录入学生信息\n");
printf(" 2.浏览学生信息\n");
printf(" 3.查询学生信息\n");
printf(" 4.删除学生信息\n");
printf(" 5.添加学生信息\n");
printf(" 6.退出\n");
printf("\n");
scanf_s("%d",&n);
switch(n)
{
case 1:printf(" ◆◆◆输入学生信息◆◆◆\n");printf("\n");input();int main();break;
case 2:printf(" ◆◆◆浏览学生信息◆◆◆\n");printf("\n");display();int main();break;
case 3:printf(" ◆◆◆查询学生信息◆◆◆\n");printf("\n");search();break;
case 4:printf(" ◆◆◆删除学生信息◆◆◆\n");printf("\n");del();break;
case 5:printf(" ◆◆◆添加学生信息◆◆◆\n");printf("\n");add();break;
case 6:exit();break;
default :break;
}
}
void input()
{
int i ;int save();
for(i=0;i<N;i++)
{
printf("请输入学生号: ");
scanf_s("%d",&em[i].number);
printf("请输入姓名: ");
scanf_s("%s",em[i].name);
printf("请输入性别: ");
scanf_s("%s",&em[i].sex);
printf("请输入年龄: ");
scanf_s("%d",&em[i].age);
printf("请输入住址: ");
scanf_s("%s",em[i].address);
printf("\n");
}
printf("\n创建完毕!\n");
save();
}
void save(int m)
{
int i;
FILE*fp;
if(!(fopen_s(&fp,"d://bbb.txt","w")))
{
printf("打开失败");
exit();
}
for(i=0;i<m;i++)
fprintf(fp,"M %8s %5s ] %8s ] %8s ?\n",em[i].number,
em[i].name,em[i].sex,em[i].age,
em[i].address);
fclose(fp);
}
void load(int b)
{
int i;
FILE*fp;
if(!(fopen_s(&fp,"d://bbb.txt","r")))
{
printf("打开失败");
exit();
}
else
for(i=0;i<b;i++)
fscanf_s(fp,"?%8s%5s]%8s]%8s?\n",&em[i].number,&em[i].name,&em[i].sex,&em[i].age,&em[i].address);
fclose(fp);
}
void display(int a)
{
int i,b=a;
load(b);
printf("\n学生号\t 姓名\t性别\t年龄\t 住址\n");
for(i=0;i<a;i++)
printf("%d\t%8s\t%s\t%d\t%8s %d\t%s\t%d\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].address);
printf("\n");
}
void search()
{
int t;int number;
printf("\n按学生号查询按1\n按姓名查询请按2");
printf("\n按性别查询请按3\n返回主菜单请按4\n");
scanf_s("%d",&t);
switch(t)
{
case 1:
printf("\n按学生号查询\n");
search_number();
break;
case 2:
printf("\n按姓名查询\n");
search_name();
break;
case 3:
printf("\n按性别查询\n");
search_sex();
break;
case 4:int main();break;
default :
printf("输入错误,请重新输入!\n");
search();
break;
}
}
void search_number()
{
int i,number;
load(*p);
printf("\n请输入要查询的学生号:");
scanf_s("%d",&number);
for(i=0;i<*p;i++)
if(number==em[i].number)
{
printf("\n该学生信息如下:\n");
printf("\n学生号\t 姓名\t性别\t年龄\t 住址\n");
printf("\n%d\t%8s\t%s\t%d\t%8s %d\t%s\t%d\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].address);
printf("\n");
break;
}
if(i==*p)
printf("\n查无此人\n");
search();
}
void search_name()
{
int i;
char name[20];
load(*p);
printf("\n请输入要查询的姓名:");
scanf_s("%s",name);
for(i=0;i<*p;i++)
if(!strcmp(em[i].name,name))
{
printf("\n该学生信息如下:\n");
printf("\n学生号\t 姓名\t性别\t年龄\t 住址\n");
printf("\n%d\t%8s\t%s\t%d\t%8s %d\t%s\t%d\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].address);
printf("\n");
break;
}
if(i==*p)
printf("\n查无此人\n");
search();
}
void search_sex()
{
int i,k=0,sex;
char xueli[20];
load(*p);
printf("\n请输入要查询的性别:");
scanf_s("%s",sex);
for(i=0;i<*p;i++)
if(!strcmp(em[i].sex,sex))
{
printf("学生号\t 姓名\t性别\t年龄\t 学历\t 工资\t 住址\t 电话\n");
printf("%d\t%8s\t%s\t%d\t%8s %d\t%s\t%d\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].address);
}
for(i=0;i<*p;i++)
{
if(!strcmp(em[i].sex,sex))
break;
else k++;
}
if(k==*p)
printf("\n查无此人\n");
search();
}
void del(int *b)
{
int i,t,j,m;
int a=*b;
char name[20];
printf("\n所有学生信息:\n");
display(a);
printf("\n请输入要删除学生的名字:");
scanf_s("%s",name);
for(i=0;i<a;i++)
{
if(!strcmp(em[i].name,name))
{
printf("\n确认删除请按1\n取消请按2\n");
scanf_s("%d",&t);
if(t==1)
{
for(j=i;j<a-1;j++)
{
em[j].age=em[j+1].age;
em[j].number=em[j+1].number;
strcpy(em[j].name,em[j+1].name);
strcpy(em[j].address,em[j+1].address);
strcpy(em[j].sex,em[j+1].sex);
}
a--;
save(j);
break;
}
if(t==2)
break;
}
}
if(i==a)
printf("\n输入错误,无此人\n");
*b=a;
printf("\n继续删除请按1\n浏览信息请按2\n返回主菜单请按3\n");
scanf_s("%d",&m);
switch(m)
{
case 1:del(p);break;
case 2:display(*b);int main();break;
case 3:int main();break;
default:break;
}
}
void add(int *a)
{
int i,n,m;
FILE*fp;
if(!(fopen_s(&fp,"d://bbb.txt","a")))
{
printf("打开失败");
exit();
}
printf("\n请输入想添加的人数:\n");
scanf_s("%d",&n);
for(i=*a;i<n+(*a);i++)
{
printf("请输入学生号: ");
scanf_s("%d",&em[i].number);
printf("请输入姓名: ");
scanf_s("%s",em[i].name);
printf("请输入性别: ");
scanf_s("%s",&em[i].sex);
printf("请输入年龄: ");
scanf_s("%d",&em[i].age);
printf("请输入住址: ");
scanf_s("%s",em[i].address);
printf("\n");
}
printf("\n添加完毕\n");
for(i=*a;i<n+(*a);i++)
fprintf(fp,"M %8s %5s ] %8s ] %8s ?\n",em[i].number,
em[i].name,em[i].sex,em[i].age,
em[i].address);
fclose(fp);
*a=*a+n;
printf("\n浏览新信息请按1\n返回主菜单请按2\n");
scanf_s("%d",&m);
switch(m)
{
case 1:display(*a);int main();break;
case 2:int main();break;
default:break;
}
}
[ 本帖最后由 尚帝zico 于 2015-5-9 10:43 编辑 ]