共同体,为什么,性别哪一行打印错误

#include <stdio.h>

struct
{
int num;
char name[10];
char sex;
char job;
union
{
int banji;
char position[10];
}category;
}person[2];

void main()
{
int i;
for(i=0;i<2;i++)
{
printf("input the num:");
scanf("%d",&person[i].num);

    printf("input the name:");
    scanf("%s",person[i].name);

    printf("input the sex(f/m):");
    scanf("%c",&person[i].sex);

      printf("input the job(s/t):");
    scanf("%c",&person[i].job);
    if(person[i].job=='t')
    {
         printf("input the position:");
        scanf("%s",person[i].category.position);
    }
    else if(person[i].job=='s')
    {
        printf("input the banji:");
        scanf("%d",&person[i].category.banji);
    }
    else
    {
        printf("data error!!");
    }
    printf("\n");
}
    
printf("\n");
printf("num  name  sex(f/m)  job  class/position\n");
for(i=0;i<2;i++)
{
    if(person[i].job=='s')
    {
     printf("%-5d%-10s%-4c%-4c%-10d\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.banji);
    }
    else
    {
     printf("%-5d%-10s%-4c%-4c%-10s\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position);
    }

}

}

img

性别读入的一个字符是你上一行中输入名字之后敲的回车, 在性别输入这句之前加个getchar()就好了