永发信息网

VC 读文件

答案:2  悬赏:20  手机版
解决时间 2021-07-19 00:37
  • 提问者网友:缘字诀
  • 2021-07-18 00:46

有一个文本文件内容大概是

name sex 学号 ……每一行都是这样怎样把这些信息读取到已经定义好的结构体里??

谢谢

最佳答案
  • 五星知识达人网友:空山清雨
  • 2021-07-18 01:11

程序代码:


#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


执行结果:


全部回答
  • 1楼网友:低音帝王
  • 2021-07-18 02:26

用fscanf函数:

fscanf("%s %s %s",&name,&sex,&id);

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯