c - 为什么 strtok 导致段错误?

标签 c string segmentation-fault

为什么下面的代码给出了 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/

相关文章:

c - 指向二维数组的指针数组,读取不正确的值

java - 从 Java 类中提取字符串

C - 一个奇怪的 Seg 错误

c - 如何在结构中引用结构

c++ - std::lock_guard<std::mutex> 施工段错误?

c - 当我调用 IDirect3DDevice9::Reset 时会发送哪些消息

c - 处理枚举按位大小大于 64

c - 具有 SSE4.1 内在函数的双线性滤波器

库之间的 C 字符串转换

c - 如何更正此代码以检查字谜?