请问这个代码是哪里的错误啊?

 

找不到student数组,错误应该在前面的代码里面。

代码在这

#include<stdio.h>
#include<strings.h>
#include<stdlib.h>
#define max 300 
struct STUDENT{              //建立关于学生信息的结构体 
 int id;
 char name[10];
 char sex[5];
 char home[20];
 char born[10];
 int age; 
 int phone;
}student[max]; 


void quit(int n)    //退出模块,判断用户是否需要保存学生信息 
{
 printf("是否需要保存系统中的学生信息到本地(1:YES 2:NO)\n");
 int p,i=0;
 scanf("%d",&p);
 if(p==1)
 {
  printf("是否将学生信息保存到当前目录下:(1:YES 2:NO)\n");
  int o;
  scanf("%d",&o);
  while(1){        //建立while循环,考虑用户输入错误,增强用户体验 
  if(o==1)
  {
   char filename[50];
   printf("请输入保存的文件名(例如students.txt)\n");
   scanf("%s",&filename);
   FILE *fp=fopen(filename,"w+");   //定义文件指针 
   if(fp!=NULL)
   {
    while(i<n&&student[i].id!=-1){   //while循环输出学生信息 
    fprintf(fp,"%04d%-7s%-7s%-7s%-7s%04d%04d\n",student[i].id,student[i].name,student[i].sex,student[i].home,
	 student[i].born,student[i].age,student[i].phone);
    i++;         
     } 
     printf("保存学生信息成功!\n");
    
   }else{
    printf("学生信息保存失败!\n");
   }
   fclose(fp);        //解除对文件指针的引用 
   break;
   }
   else if(o==2){        //用户需要自主定义保存文件位置的情况 
    char path[75];
    printf("请输入完整的保存路径:(例如:C:\\User\\DELL\\Desktop\\students.txt)\n");
    scanf("%s",&path);      
   FILE *fp=fopen(path,"w+");
   if(fp!=NULL)
   {
    while(i<n&&student[i].id!=-1){
    fprintf(fp,"%04d%-7s%-7s%-7s%-7s%04d%04d\n",student[i].id,student[i].name,student[i].sex,student[i].home,
	 student[i].born,student[i].age,student[i].phone);
    i++;
    }
    printf("保存学生信息成功!\n");
   }
   else {
    printf("保存学生信息失败!\n");
   }
   fclose(fp);
   break;
   } 
   else {
    printf("输入错误!请重新输入(1:YES 2:NO)\n");  //输入错误可以立刻重新输入,增强用户体验 
  }
  }  
 }
}  

void change(int n)
{
 while(1){       //在每个模块都加入了while循环,用户输入错误不必退出模块,可以立刻重新输入 
 printf("请输入需要修改的学生学号:");
 int changeid,i;
 scanf("%d",&changeid);
 for(i=0;i<n;i++)
 {
  if(student[i].id==changeid&&changeid!=-1)  //找到了需修改学生信息的学号 
  {
   printf("查询到的学生信息如下:\n");
   printf("学号   姓名   性别   地址   出生年月   年龄   邮箱   联系方式\n");
   printf("%04d%-7s%-7s%-7s%-7s%04d%04d\n",student[i].id,student[i].name,student[i].sex,student[i].home,
	 student[i].born,student[i].age,student[i].phone);
   printf("请输入您要修改的选项:1.修改学号2.修改姓名3.修改性别4.修改地址5.修改出生年月6.修改年龄7.修改邮箱8.修改联系方式\n");  //快速修改学生信息
   int p;
   scanf("%d",&p);
   switch (p)
   {
    case 1:printf("请输入修改后的学号:"); 
           int changeid;
           scanf("%d",&changeid);
           student[i].id=changeid;
           printf("修改学生学号成功!\n");
           break;
    case 2:printf("请输入修改后的姓名:");
           char changename[10];
           scanf("%s",&changename);
           strcpy(student[i].name,changename);
           printf("修改学生姓名成功!\n");
           break;
    case 3:printf("请输入修改后的性别:");
        char changesex[5];
        scanf("%s",&changesex);
        strcpy(student[i].sex,changesex);
        printf("修改学生性别成功!\n");
        break;
    case 4:printf("请输入修改后的地址:");
            char changehome[20];
        scanf("%s",&changehome);
        strcpy(student[i].home,changehome);
        printf("修改学生地址成功!\n");
        break;
    case 5:printf("请输入修改后的出生年月:");
           char changeborn[10];
        scanf("%s",&changeborn);
        strcpy(student[i].born,changeborn);
        printf("修改学生出生年月成功!\n");
        break;
    case 6:printf("请输入修改后的年龄:");
           int changeage;
        scanf("%d",&changeage);
       student[i].age=changeage;
        printf("修改学生年龄成功!\n");
        break;
    case 7:printf("请输入修改后的联系方式:");
        int changephone;
        scanf("%d",&changephone);
        student[i].phone=changephone;
        printf("修改学生联系方式成功!\n"); 
        break;   
    default:
      printf("输入错误!\n");
      break;
   }
   
  }
 } 
 printf("是否需要继续修改学生信息(1:YES 2:NO)\n");  
 int p; scanf("%d",&p);
 if(p==2)
 break;
 }
 printf("输入回车以继续......\n");
 getchar();
 getchar();
}
void save(int n)    //保存学生信息模块 
{
 
 int i;
 printf("系统中已储存的学生信息如下:\n");
 printf("学号   姓名   性别   地址   出生年月   年龄   邮箱   联系方式\n");
 for(i=0;i<n;i++)
 {
  if(student[i].id!=-1)   //筛选没有被删除的学生信息 
  printf("%04d%-7s%-7s%-7s%-7s%04d%04d\n",student[i].id,student[i].name,student[i].sex,student[i].home,
	 student[i].born,student[i].age,student[i].phone); 
 }
 printf("是否要保存在当前系统cpp文件目录下?(1:YES 2:NO)\n");
 int choice;   
 scanf("%d",&choice);
 if(choice==2){
 
  printf("请输入完整的txt数据库保存路径:例如(C:\\User\\DELL\\Desktop\\students.txt)");
  char path[50];
  scanf("%s",&path);
  FILE *fp=fopen(path,"w+");
  if(fp!=NULL)  //若成功打开文件指针,保存信息 
  {
   for(i=0;i<n;i++)
   {
    if(student[i].id!=-1)
    fprintf(fp,"%04d%-7s%-7s%-7s%-7s%04d%04d\n",student[i].id,student[i].name,student[i].sex,student[i].home,
	 student[i].born,student[i].age,student[i].phone);
   }
   printf("保存学生信息成功!\n");
   printf("输入回车以继续......\n");
   getchar();
   getchar();
  } 
  else  //若打开文件指针失败,反映给用户 
  {
   printf("创建txt文本失败!请检查当前路径是否正确!\n");
   printf("输入回车以继续......\n");
   getchar();
   getchar();
  }
 }else if(choice==1)
 {
  char filename[50];
  printf("请输入完整的保存文件名(例如:students.txt):\n");
  scanf("%s",&filename);
  FILE *fp=fopen(filename,"w+");
  if(fp!=NULL)
  {
   for(i=0;i<n;i++)
   {
    if(student[i].id!=-1)
    fprintf(fp,"%04d%-7s%-7s%-7s%-7s%04d%04d\n",student[i].id,student[i].name,student[i].sex,student[i].home,
	 student[i].born,student[i].age,student[i].phone);
   }
   printf("保存学生信息成功!\n");
   printf("输入回车以继续......\n");
   getchar();
   getchar();
  }else {        //若打开文件指针失败,反映给用户  
   printf("保存学生信息失败!\n");
   printf("输入回车以继续......\n");
   getchar();
   getchar();
  }
  fclose(fp);
 }else         //若输入序号错误,反映给用户
 {
  printf("输入序号有误!请重新输入:");
  scanf("%d",&choice);
 }
}
int leading(int n)    //导入txt文件信息模块 
{
 struct LSTUDENT{   //建立新的结构体以储存本地txt文件中的学生信息 
    int leading_id;
 char leading_name[10];
 char leading_sex[5];
 char leading_home[20];
 char leading_born[10];
 int leading_age;
 int leading_phone;
   } lstudent[max];
 int choice;
 printf("请注意,导入文件必须按照规定格式,否则将导入失败\n");
 printf("需要导入的txt数据库是于系统cpp程序位于同一文件夹下:(1:YES 2:NO)");
 scanf("%d",&choice);
 if(choice==1)
 {
  char filename[50],ch; 
  printf("请输入完整的txt文件名:");
  scanf("%s",&filename);
  FILE *fp=NULL;
  fp=fopen(filename,"r");
  if(fp!=NULL)
  {
   int  p,i,m=0;
   printf("打开文件成功\n");
   ch=fgetc(fp);
   if(feof(fp))
   {
    printf("未检测到学生信息!\n");
    printf("输入回车以继续......");
    getchar();
    getchar(); 
   }
   else{
   printf("已检测到如下数据,是否导入系统:(1:YES 2:NO):\n");
   printf("学号   姓名   性别   地址   出生年月   年龄   邮箱   联系方式\n");
   while(!feof(fp))
   {
    fscanf(fp,"%d%s%s%s%s%d%d\n",&Istudent[i].leading_id,&Istudent[i].leading_name,&Istudent[i].leading_sex,&Istudent[i].leading_home,
	 &Istudent[i].leading_born,&Istudent[i].leading_age,&Istudent[i].leading_phone);
    printf("%04d%-7s%-7s%-7s%-7s%04d%04d\n",Istudent[i].leading_id,Istudent[i].leading_name,Istudent[i].leading_sex,Istudent[i].home,
	 Istudent[i].leading_born,Istudent[i].leading_age,Istudent[i].leading_phone);
    m++;
    i++;
   }
   scanf("%d",&p);
   if(p==1)
   {
    for(i=0;i<m;i++)
    {
     student[n].id=lstudent[i].leading_id;
     student[n].age=lstudent[i].leading_age;
     student[n].phone=lstudent[i].leading_phone;
     strcpy(student[n].home,lstudent[i].leading_home);
     strcpy(student[n].name,lstudent[i].leading_name);
     strcpy(student[n].sex,lstudent[i].leading_sex);
     strcpy(student[n].born,lstudent[i].leading_born);
     n++;
    }
    printf("导入新学生信息成功!\n");
    printf("输入回车以继续.....");
    getchar();
    getchar();
    return n; 
    } 
   else{
    printf("放弃导入学生信息!\n");
    printf("输入回车以继续....."); 
    getchar();
    getchar();
    return n; 
   }
  }
  }
  else 
  {
   printf("未找到该txt文件,请检查文件名是否正确!\n");
   printf("放弃导入学生信息!\n");
   printf("输入回车以继续....."); 
   getchar();
   getchar();
   return n; 
  } 
 }
 else if (choice==2)
 {
  char path[50];
  printf("请输入完整的txt数据库路径:例如(C:\\User\\DELL\\Desktop\\students.txt)\n");
  scanf("%s",&path);
  FILE *fp=fopen(path,"r+");
  if(fp!=NULL)
  {
   int  p,i,m=0;
   printf("打开文件成功\n");
   printf("已检测到如下数据,是否导入系统:(1:YES 2:NO):\n");
   printf("学号   姓名   性别   地址   出生年月   年龄   邮箱   联系方式\n");
   while(!feof(fp))
   {
    fscanf(fp,"%d%s%s%s%s%d%d\n",&Istudent[i].leading_id,&Istudent[i].leading_name,&Istudent[i].leading_sex,&Istudent[i].leading_home,
	 &Istudent[i].leading_born,&Istudent[i].leading_age,&Istudent[i].leading_phone);
    printf("%04d%-7s%-7s%-7s%-7s%04d%04d\n",Istudent[i].leading_id,Istudent[i].leading_name,Istudent[i].leading_sex,Istudent[i].home,
	 Istudent[i].leading_born,Istudent[i].leading_age,Istudent[i].leading_phone);
    m++;
    i++;
   }
   scanf("%d",&p);
   if(p==1)
   {
    for(i=0;i<m;i++)
    {
     student[n].id=lstudent[i].leading_id;
     strcpy(student[n].home,lstudent[i].leading_home);
     student[n].phone=lstudent[i].leading_phone;
     strcpy(student[n].name,lstudent[i].leading_name);
     strcpy(student[n].sex,lstudent[i].leading_sex);
     student[n].age=lstudent[i].leading_age;
     strcpy(student[n].born,lstudent[i].leading_born);
     n++;
    }
    printf("导入新学生信息成功!\n");
    printf("输入回车以继续.....");
    getchar();
    getchar();
    return n; 
    } 
   else{
    printf("放弃导入学生信息!\n");
    printf("输入回车以继续....."); 
    getchar();
    getchar();
    return n; 
   }
  }
  else 
  {
   printf("未找到该txt文件,请检查文件名是否正确!\n");
   printf("放弃导入学生信息!\n");
   printf("输入回车以继续....."); 
   getchar();
   getchar();
   return n; 
  }  
 }
}
void search(int n)
{
 int j,i=0,p=0;
 printf("请输入您的查询方式:\n1.按学号查询\n2.按姓名查询\n"); 
 scanf("%d",&j);
 if(j==1){
  int k;
  printf("请输入查询的学号:");
  scanf("%d",&k);
  while(i<n)
  {
   if(student[i].id==k&&p==0&&student[i].id!=-1)
   {
    p++;
    printf("学号   姓名   性别   地址   出生年月   年龄   邮箱   联系方式\n");
    printf("%04d%-7s%-7s%-7s%-7s%04d%04d\n",student[i].id,student[i].name,student[i].sex,student[i].home,
	 student[i].born,student[i].age,student[i].phone);
   }else if(student[i].id==k&&student[i].id!=-1)
   {
    p++;
    printf("%04d%-7s%-7s%-7s%-7s%04d%04d\n",student[i].id,student[i].name,student[i].sex,student[i].home,
	 student[i].born,student[i].age,student[i].phone);
   }
   i++;
  }
  if(p==0)
  {
   printf("查询失败,没有找到该学号的学生!\n");
  }
 }else if(j==2)
 {
  printf("请输入查询的姓名:");
  char searchname[10];
  scanf("%s",&searchname);
  while(i<n){
  if(strcmp(searchname,student[i].name)==0&&p==0)
  {
   p++;
   printf("学号   姓名   性别   地址   出生年月   年龄   邮箱   联系方式\n");
   printf("%04d%-7s%-7s%-7s%-7s%04d%04d\n",student[i].id,student[i].name,student[i].sex,student[i].home,
	 student[i].born,student[i].age,student[i].phone);
  }else if(strcmp(searchname,student[i].name)==0&&p!=0) 
  {
   p++;
   printf("%04d%-7s%-7s%-7s%-7s%04d%04d\n",student[i].id,student[i].name,student[i].sex,student[i].home,
	 student[i].born,student[i].age,student[i].phone);
  }
  i++;
  }
  if(p==0)
  {
   printf("查询失败,没有找到该姓名的学生!\n");
  }
 }
 
 printf("输入回车以继续....."); 
 getchar();
 getchar();
 
}
int del(int n){
 printf("请输入您要删除的学生的学号:");
 int i;
 scanf("%d",&i);
 int j,p=0;
 while(1){
  p=0; 
  for(j=0;j<n;j++)
  {
   if(student[j].id==i){
    p++;
    printf("已查询到此学号的学生信息如下:\n");
    printf("学号   姓名   性别   地址   出生年月   年龄     联系方式\n");
    printf("%04d%-7s%-7s%-7s%-7s%04d%04d\n",student[i].id,student[i].name,student[i].sex,student[i].home,
	 student[i].born,student[i].age,student[i].phone);
    printf("请确认是否删除此学生信息(1.确认  2.取消): ");
    int k=0;
    scanf("%d",&k);
    if(k==1)
    {
     student[j].id=-1;
     printf("删除学生信息成功!\n");
    } else {
     printf("操作取消\n");
    }
   }
   }
  if(p==0)
  {
   printf("未查询到相应的学生信息,请重新输入学号(输入-1则退出):");
   scanf("%d",&i); 
  }
  if(i==-1)
  {
   printf("输入回车以继续....."); 
   getchar();
   getchar();
   return n; 
  }
 }
}

int append(int n)
{
 int choice;
 while(1){
 printf("请输入学生的学号: ");
 scanf("%d",&student[n].id);
 printf("\n请输入学生的姓名:");
 scanf("%s",&student[n].name);
 printf("\n请输入学生的性别: ");
 scanf("%s",&student[n].sex);
 printf("\n请输入学生的地址: ");
 scanf("%s",&student[n].home);
 printf("\n请输入学生的出生年月: ");
 scanf("%s",&student[n].born);
 printf("\n请输入学生的年龄: ");
 scanf("%d",&student[n].age);
 printf("\n请输入学生的联系电话: ");
 scanf("%d",&student[n].phone);
 printf("添加学生信息成功!\n"); 
 n++;
 printf("是否需要继续添加学生信息?(1:YES 2:NO)\n");
 scanf("%d",&choice);
 if(choice==2)
 {
  printf("输入回车以继续.....\n");  
  
  getchar();
  getchar();
  return n;  
 }
 } 
}

void look(int n)
{
 int i=0,p=0,j=0,t;
 int o=0;
 for(i=0;i<n;i++)
 {
  if(student[i].id!=-1) p++;
  break;
 }
 if(p!=0){
  int sort[max];
  for(i=0;i<n;i++)
  {
   if(student[i].id!=-1)
   sort[i]=student[i].id;
  }
  for(i=0;i<n-1;i++){
   for(j=i;j<n;j++)
   {
    if(sort[i]>sort[j])
    {
     t=sort[i];
     sort[i]=sort[j];
     sort[j]=t;
    }
   }
  } 
  printf("系统中已储存的学生信息如下:\n");
  printf("学号   姓名   性别   地址   出生年月   年龄    联系方式\n");
  for(i=0;i<n&&o<n;i++)
  {
   for(j=0;j<n;j++)
   {
    if(sort[i]==student[j].id&&student[j].id!=-1){
    o++;
    printf("%04d%-7s%-7s%-7s%-7s%04d%04d\n",student[i].id,student[i].name,student[i].sex,student[i].home,
	 student[i].born,student[i].age,student[i].phone);
   }
   }
   } 
 }else{
  printf("未查询到学生信息!\n");
  
 }
   printf("输入回车以继续.....");
   getchar();
   getchar();
}

int main()
{
 int n=0,m=0,l=0;    //n为实际系统中储存的学生数,m为不合法的学生数 
 while(1)
 {  
   system("cls");
   system("color 3E"); 
 int choice;
 printf("  ------欢迎来到学生信息管理系统2.2.8------\n");
 printf("|*            1.增添学生信息               *|\n");
 printf("|*            2.删除学生信息               *|\n");
 printf("|*            3.修改学生信息               *|\n");
 printf("|*            4.查询学生信息               *|\n");
 printf("|*            5.查看全部信息               *|\n");
 printf("|*            6.导入学生信息               *|\n");
 printf("|*            7.保存学生信息               *|\n");
 printf("|*            0.退出系统                   *|\n");
 printf(" -------------------------------------------\n");
 printf("请输入您的选择: ");
 scanf("%d",&choice);
 while(choice!=0&&choice!=1&&choice!=2&&choice!=3&&choice!=4&&choice!=5&&choice!=6&&choice!=7i){
  printf("输入选择错误,请重新输入:");
  scanf("%d",&choice);
 } 
 switch (choice)
 {
  case 1: n=append(n);  //增添函数实际上应该在n(实际学生人数)的后面继续添加学生信息 ,用n接受返回的实际学生人数 
    
    break;
  case 2: n=del(n); //“删除”函数并没有真正删除(除非有链表技术支持),只是让被删除学生id改为-1 
    m++;  //每“删除”一条学生信息,不合法学生信息++ 
    break;
  case 3: change(n);
    break;
  case 4: search(n); 
    break;
  case 5: look(n);
    break;
  case 6: n=leading(n);
    break;
  case 7: save(n);
    break;
  case 0: quit(n);
    printf("感谢您的使用!\n");
    system("taskkill -f -im 学生信息管理系统.exe");
    return 0;
    break;
 }
 }
 return 0;
 }