共用体问题
#include <stdio.h>struct
{
int num;
char name;
char sex;
char job;
union
{
int clas;
char position;
}category;
} person;
int main()
{
int i;
for(i = 0; i < 2; i++)
{
printf("please enter the data of person:\n");
scanf("%d%s%c%c", &person.num, &persom.name, &person.sex, &person.job); //为何是&person.name, name不是个数组名吗?
if(person.job == 's')
scanf("%d", &person.category.clas);
else if(person.job == 't')
scanf("%s", person.category.position);
else
printf("Input error!");
}
printf("\n");
printf("No.name sex job class/position\n");
for(i = 0; i < 2; i++)
{
if(person.job == 's')
printf("%-6d%-10s%-4c%-4c%-10d\n", person.num, person.name, person.sex, person.job, person.category.clas);
else
printf("%-6d%-10s%-4c%-4c%-10d\n", person.num, person.name, person.sex, person.job, person.category.clas);
}
return 0;
}
为何我得不到正确的运行结果?请问我哪个步骤错了吗?
另一个问题看上面的备注
多谢帮助
#include <stdio.h>
struct
{
int num;
char name;
char sex;
char job;
union
{
int clas;
char position;
}category;
} person;
int main()
{
int i;
for(i = 0; i < 2; i++)
{
printf("please enter the data of person:\n");
scanf("%d %s %c %c", &person.num, person.name, &person.sex, &person.job); //为何是&person.name, name不是个数组名吗?
if(person.job == 's')
scanf("%d", &person.category.clas);
else if(person.job == 't')
scanf("%s", person.category.position);
else
printf("Input error!");
}
printf("\n");
printf("No.name sex job class/position\n");
for(i = 0; i < 2; i++)
{
if(person.job == 's')
printf("%-6d%-10s%-4c%-4c%-10d\n", person.num, person.name, person.sex, person.job, person.category.clas);
else
printf("%-6d%-10s%-4c%-4c%-10d\n", person.num, person.name, person.sex, person.job, person.category.clas);
}
return 0;
} 代码两个问题
1.如注释所说,确实不用加取址符
2.scanf()中的占位符要用空格隔开
跟共用体没什么关系,关于共用体的部分语法是对的
页:
[1]