c - C 程序永远不会从 strtok() 函数返回的问题

标签 c string strtok

我正在做一项大学作业,我一直在为一个奇怪的问题绞尽脑汁,我的程序调用 strtok 并且永远不会返回。

我的代码如下:

int loadMenuDataIn(GJCType* menu, char *data)
{
   char *lineTokenPtr;
   int i;

   lineTokenPtr = strtok(data, "\n"); 
   while (lineTokenPtr != NULL) { 

   /* ... */

   }

}

我在网络上查找了很多网站,但我看不出我使用 strtok 的方式有什么问题,而且我无法确定为什么我的代码会卡住lineTokenPtr = strtok(data, "\n");

这一行

谁能帮我解释一下?

(如果有任何区别,则使用 OSX 和 Xcode)

最佳答案

你检查过参数的内容了吗?\0 终止了吗?

你传递的参数是可写内存吗? strtok 写入缓冲区,它在标记字符串时作为第一个参数获取。

IOW 如果你写

char* mystring = "hello\n";

strtok(mystring,"\n"); // you get problems

关于c - C 程序永远不会从 strtok() 函数返回的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5864627/

相关文章:

我可以在 C 语言的闪存中连接两个 #define 字符串吗?

java - Java 接受外文字母吗?

c - 在 C 中读取 csv 文件,strtok 没有返回我所期望的?

c - 以下 strtok() 用法有什么问题?

c - SPI 在 Atmel studio 中初始化

c - 使用循环更改或检查输入值

ruby .gsub 替换/替换特定范围的索引

c -\n 不使用 strtok 替换

c - 使用fscanf解析单词时,如何检查我是否跳过了一行

string - 将 cv::String 转换为 System::String