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);
}
}