为什么下面的代码给出了 Seg.最后一行出错了?
char* m=ReadName();
printf("\nRead String %s\n",m); // Writes OK
char* token;
token=strtok(m,'-');
如前所述,读取字符串打印没有问题,但为什么不能拆分为标记?
最佳答案
strtok修改了它的第一个参数,因此它应该是可修改的。
也许 ReadName() 返回一个指向只读字符数组的指针。你能告诉我们你的 ReadName() 函数吗。
如果这是段错误的原因,您可以在使用 strdup 将其传递给 strtok 之前创建 char 数组的副本。功能如:
char *copy = strdup(m);
token = strtok(copy,'-');
....
....
free(copy); // free the copy once you are done using it.
关于c - 为什么 strtok 导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2385697/