鱼C论坛

 找回密码
 立即注册
查看: 2663|回复: 2

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

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


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

下面是源码
//学生档案管理
#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;
    
    
}

图片是报错的内容

屏幕快照 2019-07-03 上午11.25.32.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-19 12:00:09 | 显示全部楼层
'EXIT_FAILURE' 没有定义
'EXIT_FAILURE' was not declared in this scope


记得将我设置为最佳答案哦!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-19 12:00:57 | 显示全部楼层
if((fp = fopen("temp.txt","wr")) == NULL)
        {
            cout << "文件打开失败!" << endl;
            exit(EXIT_FAILURE);
        }
        
        switch(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 00:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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