我正在做一项大学作业,我一直在为一个奇怪的问题绞尽脑汁,我的程序调用 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/