2012-10-15 136 views
0

我有以下结构如何访问另一个结构中定义的结构变量?

typedef struct List_Node { 
    struct File_Descriptor *data; 
    char *key; 
    struct List_Node *next; 
}List_Node; 

现在我插入一些值两者的结构和要访问的类型类file_descriptor的数据。这个怎么做?

我想这

struct List_Node *ln1; 
printf("%s", ln1.File_Descriptor->data); 

,但它给错误

error: request for member ‘error: File_Descriptor’ in something not a structure or union` 
+0

结构内部没有结构;只有一个指针。 (这可能指向一个不完整的类型) – wildplasser

回答

2

你只是想:

struct List_Node *ln1; 
printf("%s", ln1->data); 

struct File_Descriptor是类型。 data是结构成员名称。

尽管printf格式看起来完全错误。不知道你在那里试图做什么。 %s是字符串,并且data肯定看起来不像字符串。

+0

使用带'struct File_Descriptor *'类型参数的''%s''不是一个好主意'' – aschepler

+0

@aschepler确实。添加到我的答案。 – mattjgalloway

+0

我在回答中犯了很多错误,您好心纠正我刚删除它。 +1。 – hmjd

1

我相信你会混淆类型名称和变量名称。为了访问List_Node结构的data成员,您使用以下命令:

struct List_Node *ln1; // initialize this 
printf("%s", ln1->data); 

不要忘了,你首先必须初始化ln1指针引用之前将指向有效的存储位置。