pinkccc 2020-06-10 22:42 采纳率: 0%
浏览 189

c++读取文件时只有最后一个数字输出异常

在编写学生信息管理系统时,想从文件读出成绩。3个成绩,前两个都正常,但是第三个却出现异常。
第三个数字,不论我输入什么,运行出来都是“2.37152e-322”。
希望大佬们能帮忙看一下,感激不尽。
代码如下:
#include
#include
#include
using namespace std;
class student{
public: //学生基本信息
string name;
string sex;
int number; //学号
double grade1; //平时成绩
double grade2; //期末成绩
double grade3; //综合成绩
};
student s[100];
void input(){
int i;
fstream file("student.txt", ios::out );//打开文件
for(i=0;i cout cin>>s[i].number;
cout<<"输入学生姓名:";
cin>>s[i].name;
cout<<"输入学生性别:";
cin>>s[i].sex;
cout<<"输入学生平时成绩"< cin>>s[i].grade1;
cout<<"输入学生期末成绩"< cin>>s[i].grade2;
cout<<"输入学生综合成绩"< cin>>s[i].grade3;
file.write((char *)&s[i], sizeof(s[i]));//把该学生对象写入文件
}
file.close(); //关闭文件
}
int main()
{
void input();

cout<<endl<<endl;


    cout<<"       ****************一班学生信息管理系统*******************"<<endl<<endl;

string name,pwd;
cout<<"请输入班主任访问账号:";
cin>>name;
cout<<"请输入班主任访问密码:";
cin>>pwd;
cout<<"输入正确,欢迎访问!"<<endl<<endl;
cout<<"本班共20个学生"<<endl; 
int key;    char ch;       string str;     int flag=0;
do{
    cout<<"         **********主菜单:                   **********"<<endl
        <<"         **********      1、录入学生信息     **********"<<endl
        <<"         **********      2、查询学生信息     **********"<<endl
        <<"         **********      3、删除学生信息     **********"<<endl
        <<"         **********      4、修改学生信息     **********"<<endl
        <<"         **********      5、排序学生信息     **********"<<endl
        <<"         **********      0、退出系统         **********"<<endl<<endl;
    cout<<"输入访问序号:";
    cin>>key;
    while(key<0&&key>5){
        cout<<"输入错误,请重新输入:";
        cin>>key;
    }
    if(key==0) break;
    switch (key){
        case 1://1、录入学生信息 
                {
                cout<<"     录入学生信息"<<endl;
                do{
                input();
                    cout<<"输入y继续操作,输入其他返回上一页";
                    cin>>ch;
                    }while(ch=='y');
                    break;
                    }
        case 2://查询学生信息
        {
        cout<<"查询学生信息"<<endl;
        do{
            int i;
            cout<<"请输入要查询的学生的学号"<<endl;
        cin>>i;
        student stu[i];
        fstream file("student.txt",  ios::in);//打开文件
         while(!file.eof())
        {

            file.read((char *)&stu[i], sizeof(stu[i]));
                flag=1;
                cout<<"学生姓名    性别    平时成绩    期末成绩    综合成绩"<<endl;               
                cout<<stu[i].name<<" \t"<<stu[i].sex<<"\t"<<stu[i].grade1<<" \t"<<stu[i].grade2<<"\t "<<stu[i].grade3<<"\t"<<endl;
                break;
                }
        file.close();
            cout<<"输入y继续操作,输入其他返回上一页";
            cin>>ch;
}while(ch=='y');
break;
}

}
}while(key||ch==0);
}

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2020-08-31 10:17
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题