打印我们的char结构和长度

时间:2015-02-22 17:03:47

标签: c structure

我的结构有一个嵌套结构,但它只包含字符。 例如:

typedef struct {
     otherstruc struct2;
     char b[100];
}mainstruct;

typedef struct {
    char a[10];
}otherstruc;

有时我能够将结构打印为字符串,但有时程序会崩溃。例如:

printf("Main struct = %s\n", mainstruct);

打印结构内容的正确方法是什么?

2 个答案:

答案 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);

注意:

  1. 使用char数组作为 string ,它需要以空值终止。
  2. mainstruct的变量类型为otherstruc。因此,otherstruc的定义必须在mainstruct
  3. 之前

答案 1 :(得分:2)

首先,您的代码将无法编译,因为在otherstruc struct2; structmainstruct编译器不知道它是什么。因此,首先声明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);