我的结构有一个嵌套结构,但它只包含字符。 例如:
typedef struct {
otherstruc struct2;
char b[100];
}mainstruct;
typedef struct {
char a[10];
}otherstruc;
有时我能够将结构打印为字符串,但有时程序会崩溃。例如:
printf("Main struct = %s\n", mainstruct);
打印结构内容的正确方法是什么?
答案 0 :(得分:3)
printf("Main struct = %s\n", mainstruct);
是错误的打印方式。您无法一次打印所有结构。您需要按该结构类型的变量按元素打印元素。你需要使用像
这样的东西mainstruct struct1;
和
printf("struct1.struct2.a %s\n", struct1.struct2.a);
printf("struct1.b value %s\n", struct1.b);
注意:
char
数组作为 string ,它需要以空值终止。mainstruct
的变量类型为otherstruc
。因此,otherstruc
的定义必须在mainstruct
。答案 1 :(得分:2)
首先,您的代码将无法编译,因为在otherstruc struct2;
struct
行mainstruct
编译器不知道它是什么。因此,首先声明otherstruct
:
typedef struct {
char a[10];
}otherstruc;
typedef struct {
otherstruc struct2;
char b[100];
}mainstruct;
现在你应该注意到你不能打印一个结构,而是它的实例。首先实例化它
mainstruct instance;
要打印您需要访问的内容,请使用以下字段
printf("mainstruct.b = %s\n", instance.b)
printf("mainstruct.struct2.a = %s\n", instance.struct2.a);