strtok分段错误,另一种分裂字符串的方法?

时间:2017-08-25 02:27:16

标签: c strtok

好吧,我和Strtok一起遇到了麻烦。我读了许多帖子说我不能用strtok使用char *,但是,我可以用什么来分割字符串(char *)?或者你知道某种方式使用strtok指针吗?

int play(char** matrixGame, char** matrixUser, int rows, int columns, char* input)
{
   char * token2;
   int x,y;
   char * inputPlay;

   inputPlay = (char*)malloc(sizeof(char)*10);

   token2 = strtok(input, " ");
   x = atoi(token2);

   token2 = strtok(NULL, " ");
   y = atoi(token2);

   token2 = strtok(NULL, " ");
   strcpy(inputPlay,token2);    
}
希望你能帮助我们,谢谢。

2 个答案:

答案 0 :(得分:0)

这些答案解决了OP的问题strtok segmentation fault, another way to split strings?

还有另一个名为strsep的功能,但它没有标准化。根据您的使用情况,您也可以使用它。 (以便携性为代价)。

您可以编写自己的strtok版本,丢弃您不喜欢strtok的内容。

您可以通过前面讨论过的这个帖子详细了解这个discussion。如果为了您的目的实现它们,那么更改第一个参数或不处理常量char数组的问题可以解决。

答案 1 :(得分:0)

我发现了正在发生的事情。我之前在另一个使用strtok的函数中使用了输入,我认为输入是一些字符串,如2 2 x,但是strtok修改了我的输入,它只是一个2,而不是完整的字符串。所以,不要使用相同的变量。 非常感谢你们。