这个程序为什么菜单出不来啊好急😭

#include<stdio.h>

#include<stdlib.h>

typedef struct{

int Id;

char name[10];

char sex[10];

int room;

int tel;

}StudentInfo;

 

typedef struct{

int Id;

char courseNo[10];

char courseName[20];

float a;

float b;

float d;

float e;

float f;

}MarkInfo;

 

StudentInfo si[30];

MarkInfo mi[150];

int sp=0;

int mp=0;

 

void ReadFile();

void DisplayMainMenu();

/*void DataInput();

void DataQuery();

void DataDelete();

void DataSort();

void QueryById(int );

void QueryByRoom(int );

void QueryMark(int );

void sort1();

void sort2();

void markput();*/

 

int main()

{

int x;

ReadFile();

while(1){

DisplayMainMenu();

scanf("%d",&x);

switch(x)

{

// case 1:DataInput();break;

// case 2:DataQuery();break;

// case 3:DataDelete();break;

// case 4:DataSort();break;

case 5:exit(0);

}

}

return 0;

}

void ReadFile()

{

FILE *fp;

if((fp=fopen("A.txt","r"))==NULL){printf("打开文件失败!\n");exit(0);}

while(!feof(fp))

{

fscanf(fp,"%d%s%s%d%d",&si[sp].Id,&si[sp].name,&si[sp].sex,&si[sp].room,si[sp].tel);

sp++;

}

fclose(fp);

fp=fopen("B.txt","r");

while(!feof(fp))

{

fscanf(fp,"%d%s%s%f%f%f",&mi[mp].Id,mi[mp].courseNo,mi[mp].courseName,&mi[mp].a,&mi[mp].b,&mi[mp].d);

        if(mi[mp].e>=60)

mi[mp].f=mi[mp].a*0.6;

else mi[mp].f=0;

mp++;

}

fclose(fp);

}

void DisplayMainMenu()

{

printf("\n1)数据录入\n2)数据查询\n3)数据删除\n4)数据排序\n5)程序结束\n");

}

是不是ReadFile就失败了啊

fscanf(fp,"%d%s%s%d%d",&si[sp].Id,&si[sp].name,&si[sp].sex,&si[sp].room,si[sp].tel);

我觉得这样写肯定是不行的。每个数据项之间应该有分隔符,&si[sp].name,&si[sp].sex前的&要去掉,si[sp].tel要加上&符号

 

你看下是不是有地方报错,加点打印信息。