c语言写的txt中两个数据变量之间产生乱码?求求大佬

图片说明

#include "stdio.h"
#define N 2
int main()
{  int i = 0;
   typedef struct student
    {
        char name[4] ;//="0,0,0,0";  // 姓名
        char num[4]  ;//="0,0,0,0";    // 学号
        char age[4]  ;//="0,0,0,0";    // 年龄
        char sex[3]  ;//="0,0,0";   // 性别
        char score[2];//="0,0,0,0";  // 成绩
    }stu;
    stu students[5];
    FILE *fp ;//= NULL;
    printf("请输入学生的信息:\n");
    for (; i < N; i++)
    {
        printf("str[%d] -> ", i);
        scanf("%s,%s,%s,%s,%s", students[i].name, students[i].num, students[i].age, students[i].sex, students[i].score);
    }
    fp = fopen("students.txt", "w+");
    fwrite(students, sizeof(struct student), 2, fp);
    fclose(fp);
    return 0;
}

试着在控制台里使用

    chcp 65001

或许可以解决问题。。。
这种问题我也见过

不要直接写入整个结构体!要一个成员一个成员地写入文件。结构体的占用空间的大小,不等于所有成员大小之和。你这个结构体,因为有字节对齐的缘故,它的大小不是17个字节,而是20个字节。成员之间不是紧密排列的。
可以看下我之前的博文https://blog.csdn.net/qq_28249373/article/details/76784475