fscanf_s(studentsfp, "%", &coursegrade->stu[i].grade, 20);coursegrade怎么移到下一个啊?我想输入的是coursegrade改变stu不变

struct student
    {
        char name[20];
        int id;
        char grade[3];
    }*stu;
    struct courses
    {
        struct student* stu;
    }*coursegrade;
    char filename[20];
    char scourse[20];
    char* coursename;
    int m = 2;
    coursegrade = (struct courses*)malloc(5000 * sizeof(struct courses*));
    stu = (struct student*)malloc(200 * sizeof(struct student*));
    coursegrade->stu = (struct student*)malloc(200 * sizeof(struct student*));
    coursename = (char*)malloc(200 * sizeof(char));
    for (int i = 0;!feof(studentsfp);i++)
    {
        fscanf_s(studentsfp, "%s", &stu[i].name, 20);
        fscanf_s(studentsfp, "%d", &stu[i].id);
        for (int j = 0;j < m;j++)
        {
            fscanf_s(studentsfp, "%", &coursegrade->stu[i].grade, 20);
        }
        k = i;
    }
    fclose(studentsfp);
    fclose(gradesfp);

fscanf_s(studentsfp, "%c", &coursegrade[j].stu[i].grade, 20);
目测应该是 %s

char grade[3];修改为char grade[20];