有两个人(一个学生,一个teacher)。要求用同一个表格处理,然后输出

题目描述:
有两个人(一个学生,一个teacher)。学生的数据中包括姓名,号码,性别,职业,班级。teacher的数据中包括姓名,号码,性别,职业,职务。要求用同一个表格来处理。
源码如下:

img


疑惑点:
结果不正确,不知道哪儿错了,求解答!

应该是scanf的说明符需要修改,说明符在各个参数之间加上一个空格,就可以了,不加空格%c会把输入中的空格读入%c对应的变量,然后产生错误,修改如下:

#include <stdio.h>

struct {
    int num;
    char name[20];
    char sex;
    char job;
    union{
        int clas;
        char p[10];
    } A;
}B[2]; 

int main(void){
    int i;
    for(i=0;i<2;i++){
        scanf("%d %s %c %c",&B[i].num,B[i].name,&B[i].sex,&B[i].job);
        if(B[i].job=='s'){
            scanf("%d",&B[i].A.clas);
        }else if(B[i].job=='t'){
            scanf("%s",B[i].A.p);
        }else{
            printf("error!");
        }
    }
    
    printf("\n");
    
    for(i=0;i<2;i++){
        if(B[i].job=='s'){
            printf("%d %s %c %c %d\n",B[i].num,B[i].name,B[i].sex,B[i].job,B[i].A.clas);
        }else{
            printf("%d %s %c %c %s\n",B[i].num,B[i].name,B[i].sex,B[i].job,B[i].A.p);
        } 
    }
    
    return 0;
}

img