strtok segmentation fault,另一种拆分字符串的方法?

strtok segmentation fault, another way to split strings?

好吧,我在使用 Strtok 时遇到了麻烦。我读了很多帖子说我不能将 char * 与 strtok 一起使用,但是,我还能用什么来拆分字符串 (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);    
}

希望大家能帮帮我,谢谢。

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

还有一个叫做strsep的函数,但是没有标准化。根据您的用途,您也可以使用它。 (以便携性为代价)。

您可以编写自己的 strtok 版本,丢掉您不喜欢 strtok 的地方。

您可以通过前面讨论的这个话题好好看看这个discussion。如果您根据自己的目的实施这些问题,例如更改第一个参数或不处理常量 char 数组等问题是可以解决的。

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