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

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 关于react-hook组件用函数控制是否渲染的及时性问题。
  • ¥50 Linux下的软件,要做模块化拆分。进程间通信是否有开源框架可以借用?
  • ¥100 修改原有的MYSQL存储代码,在最右边添加多列数据
  • ¥20 Open Interpreter 使用时报错: still has pending operation at deallocation, the process may crash
  • ¥15 qt中链接动态链接库,调用其中的函数,该函数的参数需要传入回调函数,自己创建的回调函数无法作为参数传递进去
  • ¥15 如何把api接口返回的json数据自动计算分页自动执行并写入mysql数据库。
  • ¥15 matlab svm二分类代码问题
  • ¥40 求一款能支持ios15以上的屏蔽越狱插件。比较好用的
  • ¥15 C++ QT对比内存字符(形式不定)
  • ¥30 C++第三方库libiconv 远程安装协助