Strtok segfault

可能重复:
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); 

strtok()修改原始字符串。 您传递的是一个无法修改的常量源字符串。

试试这个:

 char *data = strdup("- This, a sample string."); test(data); 

strtok修改字符串。 您正在传递指向只读数据的指针(字符串常量)。

尝试使用char数组。

 char data[] ="- This, is a sample string." test(data);