ilihuimin 发表于 2019-7-3 11:29:12

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

源码在这里,
主要目的就是以下三个
        打印数据到屏幕
      录入数据
        退出程序

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

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

struct Archives //档案结构体
{
    char *name;
    char *id;
    char sex;
}student;

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

int main(int argc ,char *argv[])
{
    char i;
    FILE *fp;
    struct Archives *p;
    p = &student;
   
    cout <<"请输入要选择的操作:"<<'\n'       //操作选择
    <<"1.打印数据到屏幕"<<'\n'
    <<"2.录入数据"<<'\n'
    <<"3.退出程序"<<'\n'<<endl;
    cin >> i;
   
   
   
    while(i != '3')
    {
      if(i<'1' && i>'3')
      {
            cout << "请输入正确顺序!" <<endl;
            break;
      }
      
      if((fp = fopen("temp.txt","wr")) == NULL)
      {
            cout << "文件打开失败!" << endl;
            exit(EXIT_FAILURE);
      }
      
      switch(i)
      {
            case '1':
                Print(fp,p);
                break;
            case '2':
                Input(fp);
                break;
            case '3':
                fclose(fp);
                return 0;
      }
      
      cout <<"请输入要选择的操作:"<<'\n'
      <<"1.打印数据到屏幕"<<'\n'
      <<"2.录入数据"<<'\n'
      <<"3.退出程序"<< endl;
      cin >> i;
    }
   
   
    return 0;
}

int Print(FILE *fp,struct Archives *p)//输出文件中保存的学生档案
{
    int i;
    if(fgetc(fp) == EOF)    //对文件判断
    {
      cout << "该文件夹为空文件夹" <<endl;
      getchar();
      return 0;
    }
    rewind(fp);         //将光标移动至文件开头
   
    while(feof(fp))   //输出文件内容
    {
      fscanf(fp,"%s,%s,%c",p->name,p->id,&p->sex);
      cout << "第"<< i << "位成员"<< endl;
      cout << "姓名:"<< p->name <<'\n'
      <<"id:" << p->id << '\n'
      <<"sex:" << p->sex << endl;
    }
   
    cout << "共" << i << "位成员" << endl;
    return 0;
}

int Input(FILE *fp) //输入学生档案至文件
{
    char c;
   
    while(1)
    {
      struct Archives st;   //输入学生信息
      cout <<"请输入数据:"<< endl;
      cout <<"姓名:" ;
      cin >> st.name;
      getchar();
      cout << "id:" ;
      cin >> st.id;
      getchar();
      cout << "性别:";
      cin >> st.sex;
      getchar();
      
      bool i = true;//是否保存
      while(i)
      {
            cout<< "是否保存数据类型?(Y/N)"<<endl;
            cin >> c;
            
            switch(c)
            {
                case 'y':
                case 'Y':
                  i = false;
                  fprintf(fp,"%s,%s,%c",st.name,st.id,st.sex);
                  break;
                case 'N':
                case 'n':
                  i = false;
                  break;
                default:
                  cout << "请输入正确字符!";
                  break;
            }
      }
      
      i = true;
      while(i)      //是否继续录入
      {
            cout <<"是否继续录入数据?(Y/N)";
            cin >> c;
            
            switch(c)
            {
                case 'y':
                case 'Y':
                  i = false;
                  break;
                case 'N':
                case 'n':
                  i = false;
                  return 0;
                default:
                  cout << "请输入正确字符!";
                  break;
            }
      }
      
      
    }
   
    return 0;
   
   
}


图片是报错的内容

AmosAlbert 发表于 2019-7-19 12:00:09

'EXIT_FAILURE' 没有定义
'EXIT_FAILURE' was not declared in this scope


记得将我设置为最佳答案哦!!!

AmosAlbert 发表于 2019-7-19 12:00:57

if((fp = fopen("temp.txt","wr")) == NULL)
      {
            cout << "文件打开失败!" << endl;
          exit(EXIT_FAILURE);
      }
      
      switch(i)
页: [1]
查看完整版本: 一个学生档案文件录入和保存的的代码,调试成功,但是录入的时候就会出错