加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C循环中使用strtok()

发布时间:2020-12-16 05:22:13 所属栏目:百科 来源:网络整理
导读:我试图在嵌套循环中使用strtok().但这不是给我期望的结果. 可能是因为它们使用相同的内存位置.我的代码是: – char *token1 = strtok(Str1,"%");while(token1 != NULL ){ char *token2 = strtok(Str2,"%"); while(token2 != NULL ) { //DO SMTHING token2 =
我试图在嵌套循环中使用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" */
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读