Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用typedef-C的结构中的结构_C_Struct_Typedef - Fatal编程技术网

使用typedef-C的结构中的结构

使用typedef-C的结构中的结构,c,struct,typedef,C,Struct,Typedef,如何使用C中的typedef在另一个struct中正确使用一个struct 这种方法不起作用,我不明白为什么: #包括 #包括 类型定义结构 { char*nume; char*prenume; 数据; }学生; 类型定义结构 { 内安,子,卢娜,; }数据; int main() { 学生安德烈; scanf(“%s%s%d”、Andrei.nume、Andrei.prenume和Andrei.b.an); printf(“%s%s%d”,Andrei.nume,Andrei.prenume,

如何使用
C
中的
typedef
在另一个
struct
中正确使用一个
struct

这种方法不起作用,我不明白为什么:

#包括
#包括
类型定义结构
{
char*nume;
char*prenume;
数据;
}学生;
类型定义结构
{
内安,子,卢娜,;
}数据;
int main()
{
学生安德烈;
scanf(“%s%s%d”、Andrei.nume、Andrei.prenume和Andrei.b.an);
printf(“%s%s%d”,Andrei.nume,Andrei.prenume,Andrei.data.an);
返回0;
}

实际上,您的代码中有许多错误

首先,在将任何
struct
对象用作另一个
struct
的成员之前,需要声明/定义该对象

其次,您的
nume
prenume
成员被声明为指向字符的指针,但它们没有初始化任何内容,也没有为这些字符串分配任何内存

第三,您的
scanf
行中有一个“输入错误”:
Andrei.b.an
应该是
Andrei.data.an

最后(我认为),因为在scanf的格式字符串中有一个尾随空格,所以函数至少需要一个“额外”输入字段才能完成

这是一个潜在的“修复”,在我进行更改的地方添加了注释:

#包括
////你不使用这个-也许想用“malloc”来表示“nume”和“prenume”??
typedef struct//在将其用作以下结构中的成员之前,必须先定义它!
{
内安,子,卢娜,;
}数据;
类型定义结构
{
char nume[32];//这里,我们为“nume”创建固定的字符数组(字符串)。。。
char prenume[32];//…和“prenume”。您可以根据需要更改大小!
数据;
}学生;
int main()
{
学生安德烈;
scanf(“%s%s%d”、Andrei.nume、Andrei.prenume和Andrei.data.an);//注意:从格式中删除了尾随空格!
printf(“%s%s%d”,Andrei.nume,Andrei.prenume,Andrei.data.an);
返回0;
}

在您的
typedef struct…student
之前,您需要有
typedef struct…数据
。另外,在
Andrei.b.an
b
是什么?