vc++ 问题 结果为什么是这样?

图片说明

1.改成空格分隔就好
2.输入的时候用空格分隔:lilei 12 m s

 #include <stdio.h>
#define FORMAT "%s %d %c %c %d\n"
struct
{
    int num;
    char name[5];
    char sex;
    char job;
    union
    {
        int banji;
        char position[10];
    } category;
} person[2];

void main()
{
    int n, i;
    for (i = 0; i<2; i++)
    {

        scanf("%s %d %c %c", &person[i].name, &person[i].num, &person[i].sex, &person[i].job);

        if (person[i].job == 's')
        {
            printf("input a banji\n");
            scanf("%d", &person[i].category.banji);
        }
        else if (person[i].job == 't')
        {
            printf("input a position\n");
            scanf("%s", &person[i].category.position);
        }
        else printf("input error\n");
    }
    printf("\n");
    printf("Name No. sex job class/position\n");
    for (i = 0; i<2; i++)
    {
        if (person[i].job == 's')
            printf(FORMAT, person[i].name, person[i].num, person[i].sex, person[i].job, person[i].category.banji);
        else
            printf(FORMAT, person[i].name, person[i].num, person[i].sex, person[i].job, person[i].category.position);
    }
}

建议楼主代码复制出来,这样方便别人帮你调试。
你的scanf语句有问题,scanf("%s,%d,%c,%c".......)
你输入的时候用逗号分隔是没用的,它并不会如你所愿,将lilei读到name里,而是将整句话都读入到name里(楼主可以单步或者打印验证)

#include
#define FORMAT "%s %d %c %c %d\n"
struct
{ int num;
char name[5];
char sex;
char job;
union
{ int banji;
char position[10];
} category;
} person[2];

void main( )
{ int n,i;
for(i=0;i<2;i++)
{

scanf("%s,%d,%c,%c",&person[i].name,&person[i].num,&person[i].sex,&person[i].job);

   if(person[i].job=='s')
   {    printf("input a banji\n");
       scanf("%d",&person[i].category.banji);
   }
   else if(person[i].job=='t') 
   {    printf("input a position\n");
       scanf("%s",&person[i].category.position);
   }
       else printf("input error\n");
}

printf("\n");
printf("Name No. sex job class/position\n");
for(i=0;i<2;i++)
{ if(person[i].job=='s')
printf(FORMAT,person[i].name,person[i].num,person[i].sex, person[i].job, person[i].category.banji);
else
printf(FORMAT,person[i].name,person[i].num, person[i].sex, person[i].job, person[i].category.position);
}
}