2012-10-15 97 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指針引用之前將指向有效的存儲位置。