我需要建立一个嵌套结构来存储一些有关个人的基本信息(姓名,年龄,地址)。因此,我创建了一个名为“info”的结构,并创建了另一个名为“address”的嵌套结构以保存地址信息。但是每当我使用for循环提示存储值时,就会出现错误。问题在哪里?我该如何解决?
[错误]“struct Info”没有名为“address”的成员
[警告]声明未声明任何内容[默认情况下启用]
#include <stdio.h>
int main(){
struct Info{
char name[30];
int age;
struct address{
char area_name[39];
int house_no;
char district[39];
};
};
struct Info Person[10];
int i;
for(i=0;i<10;i++){
printf("enter info of person no %d\n",i);
printf("enter name\n");
scanf("%s",&Person[i].name);
printf("enter age\n");
scanf("%d",&Person[i].age);
printf("enter address :\n");
printf("enter area name :\n");
scanf("%s",&Person[i].address.area_name);
printf("enter house no : \n");
scanf("%d",&Person[i].address.house_no);
printf("enter district : \n");
scanf("%s",&Person[i].address.district);
}
}
scanf()
时不要使用&
前缀字符串成员。如果包括&
,则传递的类型是char (*)[30]
而不是char *
,但%s
格式期望一个char *
。如果编译器设定足够严格(-Wall
应该足够),它会告诉您有类型不匹配,并应该注意。 (是的,在大多数实际机器上实际操作中,它可以正常工作 - 但这在某种程度上是巧合的; 存在类型不匹配,您应避免这些问题。) - Jonathan Leffler