运行错误:关于结构体中共用体的一点问题,求指教!
//引用共用体数据/*题目:有若干个人员的数据,其中有学生和教师。学生的数据中包括:姓名、号码、
性别、职业、班级。教师的数据包括:姓名、号码、职业、性别、职务。要求
用同一个表格处理。
*/
//为简化程序,现只设两个人,一个教师,一个学生。
/*学生信息-num:101; name:Li; sex:f; job:s; class:501;
教师信息-num:102; name:He; sex:m; job:t; position:professor;
*/
#include"stdio.h"
struct
{
int num; //编号
char name[20]; //姓名
char sex; //性别
char job; //职业
union //申明无名共用体类型
{
int stu_class; //班级
char position[20]; //职务
}category; //成员category是共用体变量
}person[2]; //定义结构体数组,有2个元素
void main()
{
int i;
for(i=0;i<2;i++)
{
printf("Please input the data of person:\n");
scanf("%d%s%c%c",&person[i].num,person[i].name,//此处.name为数组名,不必加'&'.
&person[i].sex,&person[i].job); //输入前四项
if(person[i].job=='s')
scanf("%d",&person[i].category.stu_class);//如是学生,输入班级
else if(person[i].job=='t')
scanf("%s",person[i].category.position); //如是老师,输入职务
else printf("Data error,input again!"); //如'job'不是's'或't',显示错误
}
printf("\n");
for(i=0;i<2;i++)
{
if(person[i].job=='s') //若是学生,输出
printf("The student's information:\nnumber:%d\nname:%s\nsex:%c\njob:%c\nclass:%d\n",
person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.stu_class);
else if(person[i].job=='t')//若是老师,输出
printf("The teacher's information:\nnumber:%d\nname:%s\nsex:%c\njob:%c\nposition:%s\n",
person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position);
}
}
/*PS:程序编译是没有问题的。
程序运行后,我是这样输入的:101(空格)Li(空格)f(空格)s(空格)501(回车)
结果系统没有让我接着输入下一个数据,而是执行我程序里面的两句话:
Please input the data of person:
Data error,input again!
跳过了第二次输入数据以及后面的输出。
是程序本身有问题,还是我输入有问题?
<此题是谭浩强《C语言程序设计》第四版P321-例9.11>
望大家赐教!
*/