有四个结构体数据为什么只能打印出最后一个数据,不是不等于EOF才不读和打印吗?不循环,读一个打印一个倒是能打印打印所有的
![](https://profile-avatar.csdnimg.cn/a011d0908e98402895991216401d63d4_2301_77331351.jpg!4)
有四个结构体数据为什么只能打印出最后一个数据
有四个结构体数据为什么只能打印出最后一个数据,不是不等于EOF才不读和打印吗?不循环,读一个打印一个倒是能打印打印所有的
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- Kwan的解忧杂货铺 2024-04-08 15:47关注
下午好🌅🌅🌅
本答案参考ChatGPT-3.5问题:有四个结构体数据为什么只能打印出最后一个数据?
原因:在代码中,使用了一个分号(;)将while循环的代码块和循环条件分开,导致循环体只执行了一次。之后程序遇到了fclose(pf)语句,强制关闭了文件,因此只输出了最后一条记录。
解决方案:
1.取消循环体后面的分号(;),让循环体正常执行。
2.将fclose(pf)放在while循环结束后,保证所有记录都被读取和输出后再关闭文件。
修改后的代码:
#include<stdio.h> #include<stdlib.h> struct mes{ char name[15]; char sex[5]; char phone[10]; }*me; int main() { int ch; me=(struct mes*)malloc(sizeof(struct mes)); FILE*pf=fopen("text.txt","r"); if(pf==NULL) return -1; else { while((ch=fscanf(pf,"%s %s %s",me->name,me->sex,me->phone))!=EOF) { printf("%s %s %s\n ",me->name,me->sex,me->phone); } fclose(pf); return 0; } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 程序实在不会写,要秃了
- ¥15 pycharm导入不了自己的包
- ¥15 C#.net通过内网url地址获取文件并下载问题,浏览器postman可以正常下载,用程序不行
- ¥15 本人本科机械,目前研一。没有深度学习基础,目前对研究生课题一片迷茫,请教各位!
- ¥15 关于R语言单因素与多因素线性回归的平均值
- ¥15 服务器清除BIOS之后引导不了
- ¥15 CPLEX用OPL编写的混合整数线性优化问题。
- ¥15 可以用EasyConnect连接实验室内网,但无法连接内网才能访问的服务器,为什么?
- ¥15 前端预览docx文件,文件从后端传送过来。
- ¥15 层次聚类和蛋白质相似度