有一个文本文件内容大概是
name sex 学号 ……每一行都是这样怎样把这些信息读取到已经定义好的结构体里??
谢谢
有一个文本文件内容大概是
name sex 学号 ……每一行都是这样怎样把这些信息读取到已经定义好的结构体里??
谢谢
程序代码:
#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>
const int N=10;
struct student
{
char name[10];
int math,eng;
float aver;
};
void main()
{
int i;
struct student stu[N],stu1;//stu1为交换相关数据时的中间量
ifstream fin; //cout<<"请输入十个学生的姓名及数学与英语成绩:"<<endl;
fin.open("a.txt");
if(!fin){cout<<"文件打开失败!";}
//从文件中读到结构中
for( i=0;i<N;i++)
{
fin>>stu[i].name>>stu[i].math>>stu[i].eng;
}
fin.close();
for(i=0;i<N;i++)
stu[i].aver=(stu[i].math+stu[i].eng)/2.0;
for(int j=0;j<N;j++)
{ for(int k=0;k<N-1-j;k++)
if(stu[k].aver<stu[k+1].aver)
{ //注意:交换时一个结构变量的所有数据都要交换,不然会张冠李戴而达不到目的
float t=stu[k].aver;stu1=stu[k];
stu[k].aver=stu[k+1].aver;stu[k]=stu[k+1];
stu[k+1].aver=t;stu[k+1]=stu1;//同一类型的结构变量可以直接进行赋值运算
}
}
cout<<" 排名 "<<" 姓名 "<<" 数学"<<" 英语"<<" 平均成绩 "<<endl;
for(i=0;i<N;i++)
cout<<" "<<setw(3)<<i+1<<" "<<setw(8)<<stu[i].name<<" "<<stu[i].math<<" "<<stu[i].eng<<" "<<stu[i].aver<<endl;
}
//所读文件a.txt中的内容
guosheng 82 96
xushang 79 89
xuewei 84 78
xiezhou 68 78
zhouyu 85 67
jingou 81 83
huanghua 87 69
caiyao 88 77
kaoyao 49 30
shijun 78 67
执行结果:
用fscanf函数:
fscanf("%s %s %s",&name,&sex,&id);