我有这个结构:
struct dict{
int len;
char (*dict0)[MAX_WORD_LEN+1];
char (*dict1)[MAX_WORD_LEN+1];
};
我这样做:
struct dict字典; struct dict * p_diction =& dictionary; 但是当我尝试用指针指向scanf时我得到一个错误,自然我就被定义了所有。
的scanf( “%10S”,p_diction->(*(dict0 + i))的[0]);
'''之前的预期标识符('标记
并且我不想使用&字典扫描,因为除了scanf之外,其他情况也会发生这种情况。
编写命令的正确形式是什么?
答案 0 :(得分: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]
在您尝试的两个解除引用的情况下,您将通过char
,这会造成严重破坏。你只需要一个。