user-0 提问: 求助，结构体数组存储到文件夹中，出现问题的原因

回复:
user: user-1
content: 引用 楼主 liu20682402 的回复:#include<stdio.h> #include<string.h> #include<stdlib.h> # define SIZE # define LEN sizeof(struct flight)  struct flight           //结构体 {     char number[20];    //航班号     char start[20];     //起点     char end[20];       //终点     char sche[20];      //航班期     char time1[20];     //出发时间     char time2[20];     //到达时间     char model[20];     //机型     int price;          //价格 }stu[SIZE];   //定义结构体数组，存储多个航班的记录    void main() {     ad_select(); }   void ad_select() //管理员界面 {     int m;     printf("\t\t\t**************************************\n");     printf("\t\t\t     *  后台管理员航班信息操作平台  * \n");     printf("\t\t\t     *     1.航班信息的输入         * \n");     printf("\t\t\t     *     2.航班信息的显示         * \n");     printf("\t\t\t     *     3.航班信息的保存         * \n");     printf("\t\t\t     *     4.航班信息的删除         * \n");     printf("\t\t\t     *     0.操作平台的退出         * \n");     printf("\t\t\t**************************************\n");     printf("\n\n");     printf("\n输入选择(0~4):\n");     scanf("%d",&m);     switch(m)           {               case 1:input();//输入信息                      break;               case 2:display(); //显示信息                      break;               case 3:save(); //保存信息                      break;               case 4:cancel();//删除信息                      break;               case 0:us_select();//退出操作平台，进入用户界面                      break;           } }    void input() {     FILE*fp;     int i,j,k;     SIZE k;     printf("将要输入的航班信息的数据个数：");     scanf("%d",&j);     for(i=0;i<k;i++)     {         printf("输入航班的航班号:");         scanf("%s",stu[i].number);         printf("输入航班的起点站站名:");         scanf("%s",stu[i].start);         printf("输入航班的终点站站名:");         scanf("%s",stu[i].end);         printf("输入航班的航班期:");         scanf("%s",stu[i].sche);         printf("输入航班的出发时间:");         scanf("%s",stu[i].time1);         printf("输入航班的到达时间:");         scanf("%s",stu[i].time2);         printf("输入航班的机型:");         scanf("%s",stu[i].model);         printf("输入航班的价格:");         scanf("%s",stu[i].price);      }     if((fp=fopen("flight1 message.txt","wb"))==NULL)     {         printf("文件无法打开！\n");         getchar();         getchar();         ad_select();     }     for(i=0;i<k;i++)     if(fwrite(&stu[i],LEN,1,fp)!=1)     printf("写入文件失败\n");     fclose(fp);  }   void display() {     FILE*fp;     int i,n;     if((fp=fopen("flight1 message.txt","rb"))==NULL)     {         printf("信息为空,请按回车键返回主菜单！\n");         getchar();         getchar();         ad_select();     }     for(i=0;fread(&stu[i],LEN,1,fp)!=0;)     i++;     n=i;     for(i=0;i<n;i++)     fread(&stu[i],LEN,1,fp);     fclose(fp);     printf("航班号\t起点站\t终点站\t航班期\t出发时间\t到达时间\t机型\t价格\n");     for(i=0;i<n;i++)     printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%d\n",stu[i].number,stu[i].start,stu[i].end,stu[i].sche,stu[i].time1,stu[i].time2,stu[i].model,stu[i].price); }    void save() {     int i,j,n;     FILE*fp;     struct flight s;     printf("输入航班的航班号:");     scanf("%s",s.number);     printf("输入航班的起点站站名:");     scanf("%s",s.start);     printf("输入航班的终点站站名:");     scanf("%s",s.end);     printf("输入航班的航班期:");     scanf("%s",s.sche);     printf("输入航班的出发时间:");     scanf("%s",s.time1);     printf("输入航班的到达时间:");     scanf("%s",s.time2);     printf("输入航班的机型:");     scanf("%s",s.model);     printf("输入航班的价格:");     scanf("%s",s.price);     if((fp=fopen("fligth1 message.txt","rb"))==NULL)     {        printf("\n文件无法打开！\n");        getchar();        getchar();        ad_select();     }     for(i=0;fread(&stu[i],LEN,1,fp)!=0;)     i++;     n=i;     for(i=0;i<n;i++)     fread(&stu[i],sizeof(struct flight),1,fp);     fclose(fp);     strcpy(stu[n].number,s.number);     strcpy(stu[n].start,s.start);     strcpy(stu[n].end,s.end);     strcpy(stu[n].sche,s.sche);     strcpy(stu[n].time1,s.time1);     strcpy(stu[n].time2,s.time2);     strcpy(stu[n].model,s.model);     strcpy(stu[n].price,s.price);     n=n+1;     printf("航班号\t起点站\t终点站\t航班期\t出发时间\t到达时间\t机型\t价格\n\n");     fp=fopen("fligth1 message.txt","wb");     for(i=0;i<n;i++)     {         fwrite(&stu[i],sizeof(struct flight),1,fp);         printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%d\n",stu[i].number,stu[i].start,stu[i].end,stu[i].sche,stu[i].time1,stu[i].time2,stu[i].model,stu[i].price);     }     fclose(fp); }    void cancel() {     FILE*fp;     int i,j,n,flag;     char number[10];     if((fp=fopen("flight1 message.txt","rb"))==NULL)     {         printf("\n文件无法打开！\n");         getchar();         getchar();         ad_select();     }     for(i=0;fread(&stu[i],LEN,1,fp)!=0;)     i++;     n=i;     printf("\n输入你将要删除的航班号:");     scanf("%s",number);     for(flag=1,i=0;i<n;i++)     {         if(strcmp(number,stu[i].number)==0)         {             for(j=i;j<n-1;j++)             {                 strcpy(stu[j].number,stu[j+1].number);                 strcpy(stu[j].start,stu[j+1].start);                 strcpy(stu[j].end,stu[j+1].end);                 strcpy(stu[j].sche,stu[j+1].sche);                 strcpy(stu[j].time1,stu[j+1].time1);                 strcpy(stu[j].time2,stu[j+1].time2);                 strcpy(stu[j].model,stu[j+1].model);                 strcpy(stu[j].price,stu[j+1].price);             }             flag=0;             n=n-1;         }      }      printf("\n所有航班号的信息为:\n");      fp=fopen("flight1 message.txt","wb");      for(i=0;i<n;i++)      fwrite(&stu[i],LEN,1,fp);      fclose(fp);      fp=fopen("flight1 message.txt","rb");      printf("航班号\t起点站\t终点站\t航班期\t出发时间\t到达时间\t机型\t价格\n\n");      for(i=0;fread(&stu[i],LEN,1,fp)!=0;i++)      printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%d\n",stu[i].number,stu[i].start,stu[i].end,stu[i].sche,stu[i].time1,stu[i].time2,stu[i].model,stu[i].price);      if(flag)      printf("\n将要删除的航班号不存在！\n");      fclose(fp); }        void us_select()//用户界面 {     int b;     printf("\t\t\t**************************************\n");     printf("\t\t\t     *  航班信息查询与检索系统  *     \n");     printf("\t\t\t     *     1.按航班号查询       *     \n");     printf("\t\t\t     *     2.按起点站查询       *     \n");     printf("\t\t\t     *     3.按终点站查询       *     \n");     printf("\t\t\t     *     4.用户帮助说明       *     \n");     printf("\t\t\t     *     0.退出系统           *     \n");     printf("\t\t\t**************************************\n");     printf("\n请输入您的选择(0~4):\n");     scanf("%d",&b);     switch(b)     {         case 1:sea_number();break;         case 2:sea_start();break;         case 3:sea_end();break;         case 4:help();break;         case 0:         printf("谢谢您的使用！");         exit(0);         default:printf("输入错误，请重新输入（输入范围为0~4）\n");break;     }  }   void sea_number() {     FILE*fp;     int i,flag,n;     char number[10];     if((fp=fopen("fligth1 message.txt","rb"))==NULL)     {         printf("文件无法打开！\n");         getchar();         getchar();         us_select();     }     for(i=0;fread(&stu[i],LEN,1,fp)!=0;)     i++;     n=i;     for(i=0;i<n;i++)     fread(&stu[i],LEN,1,fp);     fclose(fp);     printf("\n您将要查找的航班号:");     scanf("%s",number);     for(flag=0,i=0;i<n;i++)     {         if(strcmp(number,stu[i].number)==0)         {             printf("\n您想要查找的信息为\n:");             printf("航班号\t起点站\t终点站\t航班期\t出发时间\t到达时间\t机型\t价格\n");             printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%d\n",stu[i].number,stu[i].start,stu[i].end,stu[i].sche,stu[i].time1,stu[i].time2,stu[i].model,stu[i].price);             flag=1;         }      }      if(flag!=1)      printf("您所要查找的信息不存在！\n");      printf("航班所有信息如下：\n");      display(); }    void sea_start() {     FILE*fp;     int i,flag,n;     char start[10];     if((fp=fopen("fligth1 message.txt","rb"))==NULL)     {         printf("文件无法打开！\n");         getchar();         getchar();         us_select();     }     for(i=0;fread(&stu[i],LEN,1,fp)!=0;)     i++;     n=i;     for(i=0;i<n;i++)     fread(&stu[i],LEN,1,fp);     fclose(fp);     printf("\n您将要查找的起点站:");     scanf("%s",start);     for(flag=0,i=0;i<n;i++)     {         if(strcmp(start,stu[i].start)==0)         {             printf("\n您想要查找的信息为\n:");             printf("航班号\t起点站\t终点站\t航班期\t出发时间\t到达时间\t机型\t价格\n");             printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%d\n",stu[i].number,stu[i].start,stu[i].end,stu[i].sche,stu[i].time1,stu[i].time2,stu[i].model,stu[i].price);             flag=1;         }      }      if(flag!=1)      printf("您所要查找的信息不存在！\n");      printf("航班所有信息如下：\n");      display(); }     void sea_end() {     FILE*fp;     int i,flag,n;     char end[10];     if((fp=fopen("fligth1 message.txt","rb"))==NULL)     {         printf("文件无法打开！\n");         getchar();         getchar();         us_select();     }     for(i=0;fread(&stu[i],LEN,1,fp)!=0;)     i++;     n=i;     for(i=0;i<n;i++)     fread(&stu[i],LEN,1,fp);     fclose(fp);     printf("\n您将要查找的终点站:");     scanf("%s",end);     for(flag=0,i=0;i<n;i++)     {         if(strcmp(end,stu[i].end)==0)         {             printf("\n您想要查找的信息为\n:");             printf("航班号\t起点站\t终点站\t航班期\t出发时间\t到达时间\t机型\t价格\n");             printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%d\n",stu[i].number,stu[i].start,stu[i].end,stu[i].sche,stu[i].time1,stu[i].time2,stu[i].model,stu[i].price);             flag=1;         }      }      if(flag!=1)      printf("您所要查找的信息不存在！\n");      printf("航班所有信息如下：\n");      display(); }    void help() {      printf("\t该系统只能查找和显示已经具有的航班信息，用户不可对其进行更改。\n");      printf("\t\t请用户按根据自己的要求输入自己的选择\n"); }          SIZE是多大。。。。

user: user-2
content: 崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处，看不懂时双击下一行，直到能看懂为止。

user: user-3
content: 有一个致命错误 # define SIZE  SIZE 没有值 那么 stu[SIZE];   //定义结构体数组，存储多个航班的记录 这是无效的。