m0_57288315 2022-01-24 09:10 采纳率: 100%
浏览 69
已结题

fscnaf读取汉字错误

问题遇到的现象和发生背景

用fscanf %s读取汉字再输出,汉字变了
001 李大 003 000 1101000000000000000000000 12
李大变成了鏉庡ぇ
之前运行可以正常运行,但是后面就不可以了

问题相关代码,请勿粘贴截图
typedef struct student
{
    int id;//学号
    char name[100];//姓名
    int must_num;//已选必修课程数量
    int select_num;//已选选修课程数量
    int class_form[25];//按照课程id排序,0表示未选,1表示已选
    int score;//当前总学分
    struct student* next;
}STUD;//定义学生结构体
fp2 = fopen("student.txt", "r+");
fscanf(fp2, "%3d%c", &Student->id);
fscanf(fp2, "%s", Student->name);
fscanf(fp2, "%*c%3d", &Student->must_num);
fscanf(fp2, "%*c%3d%*c", &Student->select_num);
for (int i = 0; i < 25; i++)
{
    fscanf(fp2, "%1d", &Student->class_form[i]);
}
fscanf(fp2, "%*c%3d\n",&Student->score);

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

汉字正常读取

  • 写回答

2条回答 默认 最新

  • 关注

    把fscanf中的%c都删掉,不需要
    %3d改成%d
    用空格做分割符的时候,在读文件的时候,不需要用单独的字符取读取。
    如下:

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct student
    {
        int id;//学号
        char name[100];//姓名 
        int must_num;//已选必修课程数量
        int select_num;//已选选修课程数量
        int class_form[25];//按照课程id排序,0表示未选,1表示已选
        int score;//当前总学分
        struct student* next;
    }STUD;//定义学生结构体
    
    int main()
    {
        STUD *Student = (STUD*)malloc(sizeof(STUD));
        FILE* fp2 = fopen("student.txt", "r+");
        char tmp[26]={0};
        fscanf(fp2, "%d", &Student->id);
        fscanf(fp2, "%s", Student->name);
        fscanf(fp2, "%d", &Student->must_num);
        fscanf(fp2, "%d", &Student->select_num);
        fscanf(fp2, "%s",tmp);
        for (int i = 0; i < 25; i++)
        {
            Student->class_form[i] = tmp[i]-'0'; //直接用fscanf读取是不对的
        }
        fscanf(fp2, "%d\n",&Student->score);
    
        fclose(fp2);
        return 0;
    }
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月1日
  • 已采纳回答 1月24日
  • 创建了问题 1月24日

悬赏问题

  • ¥15 angular开发过程中,想要读取模型文件,即图1的335行,会报404错误(如图2)。但我的springboot里配置了静态资源文件,如图3。且在该地址下我有模型文件如图4,请问该问题该如何解决呢?
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置
  • ¥15 Java计划序号重编制功能,此功能会对所有序号重新排序,排序后不改变前后置关系。
  • ¥15 关于哈夫曼树应用得到一些问题