下半年大二,参加了学校的实验班,假期留作业让编个学生信息管理系统
,学校c语言课都没上完,我就看看视频去写,遇到问题啦,这是咋回事啊
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
typedef struct Link
{
char name[10];
int number;
int math;
int chinese;
int english;
struct Link *next;
}RIDER;
RIDER *l=NULL;
FILE *f=NULL;
char filename[20];
void opf();
void dispaly();
void creatlist();
char menu();
void creat();
int main()
{
opf();
dispaly();
/* while(1)
{
system("cls");
char n;
n=menu();
system("cls");
switch(n)
{
case'1':creat();break;
/* case'2':
case'3':
case'4':opf();break;
case'5':
case'6':
case'7':
case'8':exit(0);
// default ;printf("\n对不起,暂无此功能");break;
}
}*/
return 0;
}
char menu()
{
printf("\n\n\t====================================================================================================\n");
printf("\n\t\t 欢迎使用学生成绩管理系统\n\n\t\t 输入字符以执行操作 \n");
printf("\n\t\t 1.录入学生信息 \n");
printf("\t\t 2.编辑学生信息 \n");
printf("\t\t 3.保存学生信息 \n");
printf("\t\t 4.加载学生信息 \n");
printf("\t\t 5.查找学生信息 \n");
printf("\t\t 6.删除学生信息 \n");
printf("\t\t 7.显示全部学生信息 \n");
printf("\t\t 8.退出系统 \n");
printf("\n\n\t===================================================================================================\n");
char n=getch();
return n;
}
void creatlist()
{
l=(RIDER*)malloc(sizeof(RIDER));
l->next=NULL;
}
void opf()
{
char ch;
RIDER *p = NULL;
RIDER *q = NULL;
q=l;
creatlist();
printf("\n\n\t====================================================================================================\n");
printf("\n\t\t 欢迎使用学生成绩管理系统\n\n\t\t \n");
printf("\n\t\t 输入文件名以打开或创建文件 \n");
printf("\n\n\t====================================================================================================\n");
while(1)
{
printf("请输入文件名:");
scanf("%s",filename);
if((f = fopen(filename,"r"))==NULL)
{
printf("\n\t\t没有该文件,是否创建?(y/n)\n");
fflush(stdin);
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
if((f = fopen(filename,"a+"))==NULL)
{
printf("\n\t\t创建文件失败,退出程序");
exit(0);
}
else
{
break;
}
}
else
{
continue;
}
}
else
{
break;
}
}
while(1)
{
p=(RIDER*)malloc(sizeof(RIDER));
if(fscanf(f,"%d\t%s\t%d\t%d\t%d\n",&p->number,p->name,&p->math,&p->chinese,&p->english)==EOF)
{
free(p);
break;
}
p->next=NULL;
q->next=p;
q=q->next;
}
}
void dispaly()
{
RIDER *q = l->next;
while(q!=NULL)
{
printf("\t\t\t%d\t%s\t%d\t%d\t%d\n",q->number,q->name,q->math,q->chinese,q->english);
q=q->next;
}
} 后面还有一个函数但是我还没调用就不贴上了,问题是这个 如图,在我输入文件名时程序应该实现将文件中的信息载入到链表中,然后通过display函数将它打印出来,可是出错了,谁能告我这是为啥啊