错误的赋值方式:
struct Personnel person[5];
struct Personnel tempPerson;
person[0] = {"小明","学生",23,'M',331};
person[1] = {"小芳","老师",25,'W',"综合"};
person[2] = {"小豪","学生",22,'M',315};
person[3] = {"小杨","学生",22,'M',283};
person[4] = {"小伟","老师",23,'M',"语文"};
编译提示:
num28.c:19:14: error: expected expression before ‘{’ token
正确的赋值方式:
一、键盘输入
for(int j = 0;j < 5;j++){
printf("请输入第%d个人物的信息:\n",j+1);
printf("姓名:");
scanf("%s",person[j].name);
printf("职业:");
scanf("%s",person[j].occupation);
printf("年龄:");
scanf("%d",&person[j].age);
printf("性别:");
getchar();
scanf("%c",&person[j].sex);
if(strcmp(person[j].occupation,"老师") == 0){
printf("科目:");
scanf("%s",person[j].message.subject);
}else if(strcmp(person[j].occupation,"学生") == 0){
printf("班级:");
scanf("%d",&person[j].message.class);
}
}
二、结构体定义的时候直接整体赋值
struct Personnel person[5] = {
{"小芳","老师",25,'W',123},
{"小伟","老师",23,'M',234},
{"小明","学生",23,'M',331},
{"小豪","学生",22,'M',315},
{"小杨","学生",22,'M',283},
};
**注意:**如果在结构体里嵌套了联合体,最好采用分别赋值,用点.
整体赋值容易出错。