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

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日

悬赏问题

  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签)
  • ¥50 sft下载大文阻塞卡死
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失
  • ¥15 springboot+vue 集成keycloak sso到阿里云
  • ¥15 win7系统进入桌面过一秒后突然黑屏
  • ¥30 backtrader对于期货交易的现金和资产计算的问题
  • ¥15 求C# .net4.8小报表工具
  • ¥15 安装虚拟机时出现问题