#include
#include
#include
#include
struct
{
int num;
char name[20];
char sex;
char job;
union
{
int clas;
char position[20];
}category;
}per[2];
void main()
{
for(int i = 0;i < 2;i++)
{
scanf("%d %s %c %c",&per[i].num,per[i].name,&per[i].sex,&per[i].job);
if(per[i].job == 's')
{
scanf("%d",&per[i].category.clas);
}
else if(per[i].job == 't')
{
scanf("%s",per[i].category.position);
}
else printf("ERROR");
}
for(int i = 0;i< 2;i++)
{
if(per[i].job == 's')
{
printf("%d %s %c %c %d",per[i].num,per[i].name,per[i].sex,per[i].job,per[i].category.clas);
}
else
{
printf("%d %s %c %c %s",per[i].num,per[i].name,per[i].sex,per[i].job,per[i].category.position);
}
}
system("pause");
}
调试下,目测是你输入的格式和你的scanf不匹配
看了下你的代码,不知道楼主是不是觉得第2次输入到union中的数据会覆盖第一次的,重新描述下你的问题。
你的输入和输出结果是什么,你期望的结果又是什么。