从递归返回后,c strtok返回NULL

当我没有在我的代码中调用相同的函数时一切正常但当函数突然返回时,变量pch为NULL:

  void someFunction() { char * pch; char tempDependencies[100*64+100]; strcpy(tempDependencies,map[j].filesNeeded); pch = strtok(tempDependencies,","); while (pch != NULL) { someFunction(); <- if i comment this out it works fine pch = strtok (NULL, ","); } } 

因此,例如当循环作用于字符串file2,file3,file4它正确地分割file2并将字符串修改为file2\\000file3,file4但是下一次调用pch = strtok (NULL, ",");pch渲染为0x0 。 在调用递归时是否有我不知道的事情?

strtok()不是可重入的。 如果要在递归函数中使用它,则必须使用strtok_r()

另见: strtok,strtok_r

在上一次执行完成之前,您无法再次调用strtok函数 – 它不是可重入的 。

请改用其可重入版本strtok_r