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

最佳答案

你检查过争论的内容了吗?它被终止了吗?
你通过的论点,是可写内存吗?strtok向缓冲区写入它在标记字符串时获取的第一个参数。
如果你写信

char* mystring = "hello\n";

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

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

10-16 11:31