C语言,文件读取到结构体数组
#include<stdio.h>#include<conio.h>#include<string.h>#include<stdlib.h>#defineS100//最大...
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define S 100//最大学生人数
#define C 10 //最大学院数
int stu;//实际学生数量
int col;//实际学院数量
struct STUDENTINFO
{
int ID,sex_temp,college_temp;
char name[20],sex,college[20];
float score[10],ave,sum;
}Student[S+1];//结构体数组
struct SEX
{
int num;
char sex;
}Sex[2];
struct COLLEGE
{
int num;
char college[20];
}College[C];
void _Load()
{
int i,a,j=0;
FILE *fp1,*fp2,*fp3;
if(!(fp1=fopen("CodeInfo.txt","r")))//读取学院信息
{
printf("找不到文件CodeInfo.txt");
exit(0);
}
for(col=0;;col++)
{
if(fscanf(fp1,"%d%s",&College[col].num,College[col].college)==EOF)break;
}
fclose(fp1);
if(!(fp2=fopen("SexInfo.txt","r")))//读取性别信息
{
printf("找不到文件SexInfo.txt");
exit(0);
}
i=0;
while(1)
{
if(fscanf(fp2,"%d%s",&Sex[i].num,&Sex[i].sex)==EOF)break;
i++;
}
fclose(fp2);
if(!(fp3=fopen("StudentInfo.txt","r")))//读取学生信息
{
printf("找不到文件StudentInfo.txt");
exit(0);
}
a=0;
while(1)
{
Student[stu].sum=0;
if(fscanf(fp3,"%d%s%d%d",&Student[stu].ID,Student[stu].name,&Student[stu].sex_temp,&Student[stu].college_temp)==EOF)break;
for(i=0;i<2;i++)
if(Student[stu].sex_temp==Sex[i].num)
Student[stu].sex=Sex[i].sex;
for(i=0;i<col;i++)
if(Student[stu].college_temp==College[i].num)
strcpy(Student[stu].college,College[i].college);
for(i=0;i<10;i++)
{
fscanf(fp3,"%f",&Student[stu].score[i]);
Student[stu].sum+=Student[stu].score[i];
}
Student[stu].ave=Student[stu].sum/10;
a++;
}
fclose(fp3);
}
请问为什么最后print出来都是空的? 展开
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define S 100//最大学生人数
#define C 10 //最大学院数
int stu;//实际学生数量
int col;//实际学院数量
struct STUDENTINFO
{
int ID,sex_temp,college_temp;
char name[20],sex,college[20];
float score[10],ave,sum;
}Student[S+1];//结构体数组
struct SEX
{
int num;
char sex;
}Sex[2];
struct COLLEGE
{
int num;
char college[20];
}College[C];
void _Load()
{
int i,a,j=0;
FILE *fp1,*fp2,*fp3;
if(!(fp1=fopen("CodeInfo.txt","r")))//读取学院信息
{
printf("找不到文件CodeInfo.txt");
exit(0);
}
for(col=0;;col++)
{
if(fscanf(fp1,"%d%s",&College[col].num,College[col].college)==EOF)break;
}
fclose(fp1);
if(!(fp2=fopen("SexInfo.txt","r")))//读取性别信息
{
printf("找不到文件SexInfo.txt");
exit(0);
}
i=0;
while(1)
{
if(fscanf(fp2,"%d%s",&Sex[i].num,&Sex[i].sex)==EOF)break;
i++;
}
fclose(fp2);
if(!(fp3=fopen("StudentInfo.txt","r")))//读取学生信息
{
printf("找不到文件StudentInfo.txt");
exit(0);
}
a=0;
while(1)
{
Student[stu].sum=0;
if(fscanf(fp3,"%d%s%d%d",&Student[stu].ID,Student[stu].name,&Student[stu].sex_temp,&Student[stu].college_temp)==EOF)break;
for(i=0;i<2;i++)
if(Student[stu].sex_temp==Sex[i].num)
Student[stu].sex=Sex[i].sex;
for(i=0;i<col;i++)
if(Student[stu].college_temp==College[i].num)
strcpy(Student[stu].college,College[i].college);
for(i=0;i<10;i++)
{
fscanf(fp3,"%f",&Student[stu].score[i]);
Student[stu].sum+=Student[stu].score[i];
}
Student[stu].ave=Student[stu].sum/10;
a++;
}
fclose(fp3);
}
请问为什么最后print出来都是空的? 展开
4个回答
2015-07-06
展开全部
/*
参考代码如下:
"stuInfo.txt"文件中是一些学生的姓名、宿舍号、学号.
定义一个学生结构体,其中成员包括学号(char num[10])、姓名(name)、宿舍号(dormNum)。
1.从文件中读取数据,存放到结构体数组中;
2.输出结构体数组中所有学生的信息.
*/
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
const int N = 200;
struct Student
{
char num[10];
string name;
int dormNum;
};
int main()
{
int i = 0, stuNum = 0;
//定义结构体数组
Student stu[N];
ifstream infile("stuInfo.txt",ios::in);
//测试文件是否成功打开
if(!infile)
{
cerr << "open error!" << endl;
exit(1);
}
while(!infile.eof())
{
infile >> stu[i].name >> stu[i].dormNum >> stu[i].num;
i++;
stuNum++;
}
infile.close(); //关闭文件
cout << "姓名" << "\t" << "学号" << "\t" << "\t" << "宿舍号" << endl;
for(i = 0; i < stuNum; i++)
{
cout << stu[i].name << "\t" << stu[i].num << "\t" << stu[i].dormNum << endl;
}
return 0;
}
展开全部
如果文件数据是你写入的,写入的格式要和读出的格式一只,也就是说,如果你写的时候是整个结构体写进去的,那么读出来的时候也要是整个结构体读取出来,如果是一个个结构体成员写进去的,那么读取出来也要一只,另外,如果是整个结构体写进去的,并且结构体还包含其他结构体成员,那么读取出来是会为空的,结构体中没有其他结构体和类,就不会空了。
追问
你有qq吗,我代码发给你看看
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-01-11
展开全部
读取与写入格式要完全一致。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道你文件里面的内容是怎么样的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |