竹叶风轻敲 2024-04-08 15:47 采纳率: 65.2%
浏览 1
已结题

有四个结构体数据为什么只能打印出最后一个数据

img


有四个结构体数据为什么只能打印出最后一个数据,不是不等于EOF才不读和打印吗?不循环,读一个打印一个倒是能打印打印所有的

  • 写回答

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;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 创建了问题 4月8日

悬赏问题

  • ¥15 程序实在不会写,要秃了
  • ¥15 pycharm导入不了自己的包
  • ¥15 C#.net通过内网url地址获取文件并下载问题,浏览器postman可以正常下载,用程序不行
  • ¥15 本人本科机械,目前研一。没有深度学习基础,目前对研究生课题一片迷茫,请教各位!
  • ¥15 关于R语言单因素与多因素线性回归的平均值
  • ¥15 服务器清除BIOS之后引导不了
  • ¥15 CPLEX用OPL编写的混合整数线性优化问题。
  • ¥15 可以用EasyConnect连接实验室内网,但无法连接内网才能访问的服务器,为什么?
  • ¥15 前端预览docx文件,文件从后端传送过来。
  • ¥15 层次聚类和蛋白质相似度