天天看点

读取数据到结构体

上机内容:从文件中读出数据,存放到定义的结构体数组中

上机目的:学习文件操作

/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院  刘杰
* All rightsreserved.
* 文件名称:score.cpp
* 作者:
* 完成日期:2013 年3月13日
第2 周第2页
* 版本号: v1.0
* 输入描述:文件读取
* 问题描述:将学生成绩信息存储在结构体数组中,对结构体排序并输出
* 输出:按C++降序和按学号升序排序后的学生成绩单
*/

#include <iostream>
#include <fstream>
#include <cstdlib>  //在codeblocks下,exit(1)需要这个头文件
using namespace std;
struct Student
{
    char num[13]; //尽管都是由数字构成,但看作为字符更合适。学号12位,定义为13个字符,便于处理成字符串
    char name[10]; //每个汉字占两个字节,中国人的名字,5个汉字够用
    int cpp;
    int math;
    int english;
    int grade;
};
const int N=200;
int main( )
{
    int i, stuNum=0;
    //定义结构体数组
    Student stu[N];

    //下面从文件中读取数据到结构体数组,在读入的过程中计算总分
    ifstream infile("score.txt",ios::in); 	//以输入的方式打开文件
    if(!infile)   				//测试是否成功打开
    {
        cerr<<"open error!"<<endl;
        exit(1);
    }
    i=0;
    while(!infile.eof())
    {
        infile>>stu[i].num>>stu[i].name>>stu[i].cpp>>stu[i].math>>stu[i].english;
        stu[i].grade=stu[i].cpp+stu[i].math+stu[i].english;
        ++stuNum;
        ++i;
    }
    infile.close();
    for(i=0; i<stuNum-1; ++i)
    {
        cout<<stu[i].num<<"\t"<<stu[i].name<<"\t"<<stu[i].cpp<<"\t"<<stu[i].math<<"\t"<<stu[i].english<<"\t"<<stu[i].grade<<endl;
    }
    return 0;
}
           

运行结果:

读取数据到结构体
c++

继续阅读