c语言,从文本文件中读取数据到结构体数组,读不到最后一行是什么问题

2024-11-29 08:07:27
推荐回答(1个)
回答1:

不是读不到,而是读完最后一行后,即跳出了循环,没有打印,所以,只需要在while(){}后面添加一行,如:

.....
while(fgetc(fp)!=EOF) 
{  
    printf("%d %d %s\n",eve[i].p,eve[i].d,eve[i].name); i++;  
    fscanf(fp,"%d%d%s",&eve[i].p,&eve[i].d,&eve[i].name);  
}
printf("%d %d %s\n",eve[i].p,eve[i].d,eve[i].name);
.....

就可以打印出来了。

把代码改成如下:

.....
fscanf(fp,"%d%d%s",&eve[i].p,&eve[i].d,&eve[i].name);
printf("%d %d %s\n",eve[i].p,eve[i].d,eve[i].name);
while(fgetc(fp)!=EOF) 
{  
    i++;  
    fscanf(fp,"%d%d%s",&eve[i].p,&eve[i].d,&eve[i].name);  
    printf("%d %d %s\n",eve[i].p,eve[i].d,eve[i].name);
}
.....

应该也行