AL-*_*ami 9 c structure declaration
我必须构建一个嵌套结构来存储一些人的某些基本信息(姓名,年龄,地址).所以我创建了一个名为"info"的结构,并保存地址,我在"info"中创建了另一个嵌套结构,名为"address".但每当我提示使用for循环存储值时,我都会收到错误.这里有什么问题,我该如何解决?
[错误]'struct Info'没有名为'address'的成员
[Warning]声明没有声明任何内容[默认启用]
#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);
}
}
Run Code Online (Sandbox Code Playgroud)
Vla*_*cow 13
您struct address在结构中声明了一个类型,Info但不是此类型的数据成员.
你可以写例如
struct Info{
char name[30];
int age;
struct address{
char area_name[39];
int house_no;
char district[39];
} address;
^^^^^^^^
};
Run Code Online (Sandbox Code Playgroud)
目前您所拥有的只是一个名为的结构的声明address,但是您将需要一个名为in 的变量来使用该语法。addressstruct InfoPerson[i].address
您需要address稍微移动一下单词:
struct Info{
char name[30];
int age;
struct {
char area_name[39];
int house_no;
char district[39];
} address; // <<< here it is now
};
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用以下内容:
struct Info{
char name[30];
int age;
struct addr{ // as noted by @JonathanLeffler,
// it's not necessary to change the
// name of a struct
char area_name[39];
int house_no;
char district[39];
};
struct addr address; // <<< a variable of type struct addr
};
Run Code Online (Sandbox Code Playgroud)