如何实现循环读入结构体数组字段?

wokaoyan1981 2016-11-12 06:53:41
运行程序,始终读的是结构体数组的第一个结构体的字段,即struct student stu[0]的id值。没有实现依次读入其余两个结构体的功能。请问怎么样改进?
#include <stdio.h>
#include <stdlib.h>
int count;
struct student
{
int id;
char name[90];
float score;;
} stu[3],temp;

struct student readfile(void);

int main()
{

for(count=0;count<3;count++)
{
struct student *pst=&stu[count];
stu[count]=readfile();
printf("id is %d\n",stu[count].id);
pst++;
}
return 0;
}

struct student readfile()
{
FILE *fp;
if((fp=fopen("stud.dat","a+"))==NULL)
{
fputs("Can't open stud.dat!",stderr);
exit(1);
}
fscanf(fp,"%d %s %f %f %f %f",&temp.id,&temp.name,&temp.mathscore,&temp.englishscore,&temp.chinesescore,&temp.average);
fclose(fp);
return temp;
}
...全文
524 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wokaoyan1981 2016-11-13
  • 打赏
  • 举报
回复
谢谢!把fopen那句放在主函数for循环外就成功了。另外不需要指向结构体的指针pst++辅助,删除即可。
paschen 2016-11-12
  • 打赏
  • 举报
回复
因为你每次重新打开文件,每次打开时文件指针都在开头,把你的文件打开放在主函数循环外面
Saleayas 2016-11-12
  • 打赏
  • 举报
回复
当重新打开文件时,文件的指针指向开头。 把文件打开和关闭放到循环外面。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧