strtok给出分段错误

pau*_*ons 4 c string segmentation-fault

为什么下面的代码给出了Seg.最后一行出错?

char* m=ReadName();
printf("\nRead String %s\n",m); // Writes OK
char* token;
token=strtok(m,'-');
Run Code Online (Sandbox Code Playgroud)

如上所述,读取字符串打印没有问题,但为什么不能拆分为令牌?

cod*_*ict 18

strtok修改了它的第一个参数,因此它应该是可修改的.

也许ReadName()返回一个指向只读char数组的指针.您可以向我们展示您的ReadName()函数.

如果这就是seg-faullt的原因,你可以在使用strdup函数将它传递给strtok之前创建char数组的副本,如:

char *copy = strdup(m);
token = strtok(copy,'-');
....
....
free(copy); // free the copy once you are done using it.
Run Code Online (Sandbox Code Playgroud)