【发布时间】:2015-02-21 00:38:44
【问题描述】:
如何将strtok() 中的值分配给结构中的数组?在我的结构中,我有char *extraRoomOne,而在我的主体中,我有:
while (token!= NULL)
{
token = strtok(NULL, " ");
certainRoom.extraRoomOne[counter] = token;
}
编译器告诉我取消引用它,但是当我这样做时,我得到一个段错误。
typedef struct room{
char *extraRoomOne;
}room;
总的来说,我只有 `room certainRoom;
编辑:将 char *extraRoomOne 更改为 char **extraRoomOne
现在我有:
token = strtok(NULL," ");
certainRoom.extraRoomOne = realloc(certainRoom.extraRoomOne,(counter + 1) * sizeof(char *));
certainRoom.extraRoomOne[counter] = malloc(strlen(token)+1);
strcpy(certainRoom.extraRoomOne[counter],token);`
这是realloc和malloc的正确方式吗?我每次也会增加下面的计数器
【问题讨论】:
-
能否请您出示
certainRoom的声明以及struct的定义。 -
最有可能的是,您应该使用
strcpy()或strdup()而不是直接赋值,具体取决于您之前是否为extraRoomOne分配了指向空间。 -
还有
certainRoom?它是一个数组吗?它只是struct room的一个实例吗? -
是struct room的一个实例
-
你想做什么?因为显然你想捕获许多令牌,那么你想如何存储它们?。