m0_64967516 2021-12-15 16:43 采纳率: 100%
浏览 104
已结题

C语言读取文件为什么显示乱码

代码

img

huiyuan

img

调试结果

img

  • 写回答

2条回答 默认 最新

  • 关注

    num是数组,%ld只能读取1个long类型,scanf中直接用数组接收数据肯定出错啊
    把结构体中的
    long num[20]改成 long num;
    int score[20]改成 int score;
    int tele[20]改成 long tele;
    scanf中的\t改成空格,最后一个%d改成 %ld(对应tele这个变量的)

    或者,直接用char数组来接收num和tele数据就可以了,下面的代码是用char数组来读取数据的。

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct member
    {
        char num[20];
        char name[20];
        char sex[20];
        int score;
        char tele[20];
    };
    struct member mem[20];
    int main()
    {
        int i,j;
        FILE* fp;
        if ((fp=fopen("huiyuan.txt","r"))==NULL)
        {
            printf("wrong");
            exit(0);
        }
        i=0;
        while (!feof(fp)) //文件中并不一定够20组数据,所以最好不要用for循环取读取
        {
            fscanf(fp,"%s %s %s %d %s\n",mem[i].num,mem[i].name,mem[i].sex,&mem[i].score,mem[i].tele);
            fprintf(stdout,"%s %s %s %d %s\n",mem[i].num,mem[i].name,mem[i].sex,mem[i].score,mem[i].tele);
            
            i++; //i是读取的数据条数
        }
        fclose(fp);
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月23日
  • 已采纳回答 12月15日
  • 创建了问题 12月15日

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格