在C循环中使用strtok()

我试图在嵌套循环中使用strtok().但这不是给我期望的结果.
可能是因为它们使用相同的内存位置.我的代码是: –
char *token1 = strtok(Str1,"%");
while(token1 != NULL )
{
  char *token2 = strtok(Str2,"%");
  while(token2 != NULL )
   {
      //DO SMTHING
      token2 = strtok(NULL,"%");
    }
     token1 = strtok(NULL,"%");
     // Do something more
 }

解决方法

是的,strtok()确实使用一些静态内存来保存调用间的上下文.如果您使用VS(与strtok_r()相同),请使用可重入版本的strtok(),strtok_r()或strtok_s().

它有一个附加的上下文参数,您可以在不同的循环中使用不同的上下文.

char *tok,*saved;
for (tok = strtok_r(str,"%",&saved); tok; tok = strtok_r(NULL,&saved))
{
    /* Do something with "tok" */
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...