0

我有这个结构:

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

};

我这样做:

结构字典字典;结构字典 *p_diction=&dictionary; 但是当我尝试使用指向指针的指针进行扫描时,我得到一个错误,自然我已经定义了一切。

scanf("%10s",p_diction->(*(dict0+i))[0]);

''(' 标记之前的预期标识符

不,我不想使用 &dictionary 进行 scanf,因为除了 scanf 之外的其他情况也会发生这种情况。

编写命令的正确形式是什么?

4

1 回答 1

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. 然后要获得正确类型的指针,您必须取消引用才能获得数组。然后您可以使用自动数组到指针的转换,或者显式传递char数组中第一个的地址

&p_diction->dict0[i][0]

使用您尝试的两次取消引用,您将通过 a char,这将造成严重破坏。你只需要一个。

于 2013-01-11T15:13:16.263 回答