这保持了segfaulting,我不知道为什么......我知道你应该避免使用strtok的指针,所以我正在使用文字......任何人都有任何想法?
int getParameters(char input[], char *cmdArgs[]){
char* cmd;
int i = 0;
cmd = strtok(input, " ");
while( cmd != NULL)
{
cmdArgs[i] = cmd;
cmd = strtok(NULL, " ");
i++;
}
return 0;
}
编辑:
拿出另一个...来自我试过的评论实现。还添加了cmd ...的声明也因为注释的实现而被删除
编辑2:
我删除了文字的支持指针...我的新实现如下。只有当它进入循环时才会出现段错误。
int getParameters(char *input, char *cmdArgs[]){
char *cmd;
int i = 0;
cmd = strtok(input, " ");
while( cmd != NULL)
{
cmdArgs[i] = cmd;
cmd = strtok(NULL, " ");
i++;
}
return 0;
}
答案 0 :(得分:0)
这是strtok的规范。 char * strtok(char * str,const char * delimiters);
你的另一个指针指向哪里?它是什么类型的?
答案 1 :(得分:0)
*cmdArgs[]
是一个固定大小的double *指针。如果您动态增长它,则必须为每个读取cmdArg调用malloc
。
所以你的段错是因为你可能在cmdArgs的分配空间之外写的,也就是说我可能会超过cmdArgs的宽度
cmd的类型声明是什么?