【发布时间】:2016-03-08 14:22:33
【问题描述】:
我必须构建一个嵌套结构来存储有关某人的一些基本信息(姓名、年龄、地址)。所以我创建了一个名为“info”的结构并保存地址,我在“info”中创建了另一个嵌套结构,称为“address”。但是,每当我提示使用 for 循环存储值时,都会出现错误。这里有什么问题,我该如何解决?
[错误]“结构信息”没有名为“地址”的成员
[警告] 声明不声明任何内容[默认启用]
#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应该足够了),它会告诉你类型不匹配——你应该注意它。 (是的,在大多数实际机器上的实际实践中,它确实可以正常工作——但这有点巧合;存在类型不匹配,你应该避免这些。)
标签: c struct structure declaration