2013-01-11 114 views
0

我有這樣的結構:指針與二維陣列結構

struct dict{ 
int len; 
char (*dict0)[MAX_WORD_LEN+1]; 
char (*dict1)[MAX_WORD_LEN+1]; 

};

我這樣做:

struct dict dictionary; struct dict * p_diction =&dictionary; 但是當我嘗試scanf與指針指針我得到一個錯誤,自然我被定義和一切。 (「%10s」,p_diction - >(*(dict0 + i))[0]);

(‘令牌

,沒有我不「之前的期望標識符’想用&字典SCANF,因爲這也是在其他情況下發生的,除了scanf函數。

什麼是正確的形式寫的命令?

回答

0

你想要的是

p_diction->dict0[i] 

*(p_diction->dict0 + i) 

您需要將指針傳遞給char%s轉換,所以char[MAX_WORD_LEN+1]是好的(將在它被轉換爲一個指向第一char)。

p_diction->dict0 

給你的指針char[MAX_WORD_LEN+1],並且希望i個這些陣列的,所以你必須通過i增加此指針。然後爲了得到正確類型的指針,你必須取消引用來獲取數組。然後,你可以使用自動陣列到指針的轉換,或明確地在陣列

&p_diction->dict0[i][0] 

隨着你嘗試兩個dereferencings在通過第一char的地址,將已通過一個char,這將導致破壞。你只需要一個。

+0

謝謝你,它的工作。 – Thongurf