m0_73379149 2022-08-21 23:29 采纳率: 100%
浏览 30
已结题

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

#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, &(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);
}
}
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-08-22 09:26
    关注

    修改如下,供参考:

    #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);
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月30日
  • 已采纳回答 8月22日
  • 创建了问题 8月21日

悬赏问题

  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思