为啥发生异常断点,提示访问冲突啊

#include
#define TOTAL 2
struct Person {
char name[20];
int num;
char sex;
char profession;
union {
float score;
char course[20];
}sc;
};
void main() {
int i;
struct Person persons[TOTAL];
for (i = 0; i < TOTAL; i++) {
printf("input info:");
scanf_s("%s %d %c %c", persons[i].name, &(persons[i].num), &(persons[i].sex), &(persons[i].profession));
if (persons[i].profession == 's') {
printf("请输入该学生成绩:");
scanf_s("%f", &persons[i].sc.score);
}
else {
printf("请输入teacher的课程:");
scanf_s("%s", persons[i].sc.course);
}
fflush(stdin);//刷新,确保都输入了
}
printf("\nName\t\tNum\tSex\tProfession\tScore/Course\n");
for (i = 0; i < TOTAL; i++) {
if (persons[i].profession == 's') {
printf("%s\t\t%d\t%c\t%c\t\t%f\n",persons[i].name,persons[i].num,persons[i].sex,persons[i].profession,persons[i].sc.score);
}
else {
printf("%s\t\t%d\t%c\t%c\t\t%s\n", persons[i].name, persons[i].num, persons[i].sex, persons[i].profession, persons[i].sc.course);
}
}
}

修改如下,供参考:

#include<stdio.h>
#define TOTAL 2
struct Person {
    char name[20];
    int num;
    char sex;
    char profession;
    union {
        float score;
        char  course[20];
    }sc;
};
void main() {
    int i;
    struct Person persons[TOTAL];
    for (i = 0; i < TOTAL; i++) {
        printf("input info:");
        scanf_s("%s %d %c %c", persons[i].name, 20, &persons[i].num, &persons[i].sex, 1, &persons[i].profession, 1);
        //scanf_s("%s %d %c %c", persons[i].name, &(persons[i].num), &(persons[i].sex), &(persons[i].profession));修改
        if (persons[i].profession == 's') {
            printf("请输入该学生成绩:");
            scanf_s("%f", &persons[i].sc.score);
        }
        else {
            printf("请输入teacher的课程:");
            scanf_s("%s", persons[i].sc.course, 20);
            //scanf_s("%s", persons[i].sc.course);修改
        }
        fflush(stdin);//刷新,确保都输入了
    }
    printf("\nName\t\tNum\tSex\tProfession\tScore/Course\n");
    for (i = 0; i < TOTAL; i++) {
        if (persons[i].profession == 's') {
            printf("%s\t\t%d\t%c\t%c\t\t%f\n", persons[i].name, persons[i].num, 
                      persons[i].sex, persons[i].profession, persons[i].sc.score);
        }
        else {
            printf("%s\t\t%d\t%c\t%c\t\t%s\n", persons[i].name, persons[i].num, 
                    persons[i].sex, persons[i].profession, persons[i].sc.course);
        }
    }
}

scanf_s函数用对了吗?
scanf_s("%s", persons[i].sc.course);