可能重复:
strtok给出分段错误
为什么我使用此代码获得段错误?
void test(char *data)
{
char *pch;
pch = strtok(data, " ,.-"); // segfault
while (pch != NULL)
{
printf("%s\n", pch);
pch = strtok(NULL, " ,.-");
}
return NULL;
}
char *data = "- This, a sample string.";
test(data);
Run Code Online (Sandbox Code Playgroud)
Mat*_*att 16
strtok()修改原始字符串.您正在传递一个无法修改的常量源字符串.
试试这个:
char *data = strdup("- This, a sample string.");
test(data);
Run Code Online (Sandbox Code Playgroud)