我在测试用结构体写的学生管理系统的时候,测试文件读取子程序,运行之后发现程序在不停地循环读取我已设置好的文件(trial.txt),并没有在文本内容结束后就停止读取。想知道为什么会这样?
以下为源代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct information
{
long id;
char name[10];
char major[10];
int score[4];
}INFO;
void main()
{
INFO info[4];
FILE*fp;
int i,j,k,n;
if((fp=fopen("trial.txt","r"))==NULL)
{
printf("无法导入,请重新操作\n");
exit(0);
}
for(i=0;!feof(fp);i++)
{
fscanf(fp,"%ld%s%s",&info[i].id,info[i].name,info[i].major);
for(j=0;j<4;j++)
{
fscanf(fp,"%10f",&info[i].score[j]);
}
}
fclose(fp);
程序执行结果:
for(i=0;!feof(fp);i++) 这个地方错了
可以用
while (fgets(buf, 1024, fp) != NULL)
{
fscanf(fp,"%ld%s%s",&info[i].id,info[i].name,info[i].major);
}