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日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵