鱼C论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 178|回复: 2

一个学生档案文件录入和保存的的代码,调试成功,但是录入的时候就会出错

[复制链接]
最佳答案
0 
发表于 2019-7-3 11:29:12 | 显示全部楼层 |阅读模式
20鱼币
源码在这里,
主要目的就是以下三个
        打印数据到屏幕
        录入数据
        退出程序


源码编译的时候没问题,但是一用就会出现错误,直接退出

下面是源码
  1. //学生档案管理
  2. #include <iostream>
  3. using namespace std;

  4. struct Archives //档案结构体
  5. {
  6.     char *name;
  7.     char *id;
  8.     char sex;
  9. }student;

  10. int Print(FILE *fp,struct Archives *p);//输出文件中保存的学生档案
  11. int Input(FILE *fp);//输入学生档案至文件

  12. int main(int argc ,char *argv[])
  13. {
  14.     char i;
  15.     FILE *fp;
  16.     struct Archives *p;
  17.     p = &student;
  18.    
  19.     cout <<"请输入要选择的操作:"<<'\n'       //操作选择
  20.     <<"1.打印数据到屏幕"<<'\n'
  21.     <<"2.录入数据"<<'\n'
  22.     <<"3.退出程序"<<'\n'<<endl;
  23.     cin >> i;
  24.    
  25.    
  26.    
  27.     while(i != '3')
  28.     {
  29.         if(i<'1' && i>'3')
  30.         {
  31.             cout << "请输入正确顺序!" <<endl;
  32.             break;
  33.         }
  34.         
  35.         if((fp = fopen("temp.txt","wr")) == NULL)
  36.         {
  37.             cout << "文件打开失败!" << endl;
  38.             exit(EXIT_FAILURE);
  39.         }
  40.         
  41.         switch(i)
  42.         {
  43.             case '1':
  44.                 Print(fp,p);
  45.                 break;
  46.             case '2':
  47.                 Input(fp);
  48.                 break;
  49.             case '3':
  50.                 fclose(fp);
  51.                 return 0;
  52.         }
  53.         
  54.         cout <<"请输入要选择的操作:"<<'\n'
  55.         <<"1.打印数据到屏幕"<<'\n'
  56.         <<"2.录入数据"<<'\n'
  57.         <<"3.退出程序"<< endl;
  58.         cin >> i;
  59.     }
  60.    
  61.    
  62.     return 0;
  63. }

  64. int Print(FILE *fp,struct Archives *p)//输出文件中保存的学生档案
  65. {
  66.     int i;
  67.     if(fgetc(fp) == EOF)    //对文件判断
  68.     {
  69.         cout << "该文件夹为空文件夹" <<endl;
  70.         getchar();
  71.         return 0;
  72.     }
  73.     rewind(fp);         //将光标移动至文件开头
  74.    
  75.     while(feof(fp))     //输出文件内容
  76.     {
  77.         fscanf(fp,"%s,%s,%c",p->name,p->id,&p->sex);
  78.         cout << "第"<< i << "位成员"<< endl;
  79.         cout << "姓名:"<< p->name <<'\n'
  80.         <<"id:" << p->id << '\n'
  81.         <<"sex:" << p->sex << endl;
  82.     }
  83.    
  84.     cout << "共" << i << "位成员" << endl;
  85.     return 0;
  86. }

  87. int Input(FILE *fp) //输入学生档案至文件
  88. {
  89.     char c;
  90.    
  91.     while(1)
  92.     {
  93.         struct Archives st;     //输入学生信息
  94.         cout <<"请输入数据:"<< endl;
  95.         cout <<"姓名:" ;
  96.         cin >> st.name;
  97.         getchar();
  98.         cout << "id:" ;
  99.         cin >> st.id;
  100.         getchar();
  101.         cout << "性别:";
  102.         cin >> st.sex;
  103.         getchar();
  104.         
  105.         bool i = true;  //是否保存
  106.         while(i)
  107.         {
  108.             cout<< "是否保存数据类型?(Y/N)"<<endl;
  109.             cin >> c;
  110.             
  111.             switch(c)
  112.             {
  113.                 case 'y':
  114.                 case 'Y':
  115.                     i = false;
  116.                     fprintf(fp,"%s,%s,%c",st.name,st.id,st.sex);
  117.                     break;
  118.                 case 'N':
  119.                 case 'n':
  120.                     i = false;
  121.                     break;
  122.                 default:
  123.                     cout << "请输入正确字符!";
  124.                     break;
  125.             }
  126.         }
  127.         
  128.         i = true;
  129.         while(i)        //是否继续录入
  130.         {
  131.             cout <<"是否继续录入数据?(Y/N)";
  132.             cin >> c;
  133.             
  134.             switch(c)
  135.             {
  136.                 case 'y':
  137.                 case 'Y':
  138.                     i = false;
  139.                     break;
  140.                 case 'N':
  141.                 case 'n':
  142.                     i = false;
  143.                     return 0;
  144.                 default:
  145.                     cout << "请输入正确字符!";
  146.                     break;
  147.             }
  148.         }
  149.         
  150.         
  151.     }
  152.    
  153.     return 0;
  154.    
  155.    
  156. }
复制代码


图片是报错的内容

屏幕快照 2019-07-03 上午11.25.32.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
8 
发表于 2019-7-19 12:00:09 | 显示全部楼层
'EXIT_FAILURE' 没有定义
'EXIT_FAILURE' was not declared in this scope


记得将我设置为最佳答案哦!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
8 
发表于 2019-7-19 12:00:57 | 显示全部楼层
if((fp = fopen("temp.txt","wr")) == NULL)
        {
            cout << "文件打开失败!" << endl;
            exit(EXIT_FAILURE);
        }
        
        switch(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2019-8-21 12:07

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表