当前位置:  技术问答>linux和unix

Strtok_r函数的功能如何实现

    来源: 互联网  发布时间:2016-08-25

    本文导语:  我自己写了个 类似的函数,但是不支持多线程调用。请问此函数是通过什么方式实现的 #include    #include   #include   #include   using namespace std;  char *myStrtok_r(char *strSrc ,const char *strCtl)  { static char * lastStr =...

我自己写了个 类似的函数,但是不支持多线程调用。请问此函数是通过什么方式实现的
#include   
#include  
#include  
#include  
using namespace std; 
char *myStrtok_r(char *strSrc ,const char *strCtl) 
{
static char * lastStr = NULL;
static stack   lastStrStack ;
if(NULL!=strSrc&&NULL!=lastStr)
lastStrStack.push(lastStr);
else
{
  if(lastStrStack.size()>=1&&NULL==lastStr){
   lastStr = lastStrStack.top();
   lastStrStack.pop();
   return NULL;
  }
}
const char * pStrCtl = strCtl;
if (NULL==strCtl||''==*strCtl||(NULL==strSrc&&NULL==(strsrc=/tech-qa-linux/lastStr/index.html)))
return strSrc;
char * pStrSrc = strSrc ;
char * pStrStcHead = strSrc ;
while(''!=*pStrSrc)
{
for(;(*pStrsrc=/tech-qa-linux/=_pStrCtl/index.html)&&(''!=*pStrCtl)&&(''!=*pStrSrc);pStrSrc++,pStrCtl++);
if(''==*pStrCtl)
{
*pStrStcHead='';
lastStr = pStrSrc;
break;
}
else
{
pStrStcHead++;
pStrCtl = strCtl;
pStrSrc = pStrStcHead;
lastStr = NULL;
}
}
return strSrc;
}

 
int main(char *argv[] ,int argn)
{
char a[]="Fred male 25,John male 62,Anna female 16";
int in = 0;
char *buf=a;
char *p[20] ; 
  while((p[in]=myStrtok_r(buf,","))!=NULL) {
             buf=p[in];
             while((p[in]=myStrtok_r(buf," "))!=NULL) {
                       in++;
                       buf=NULL;
                    }
                 p[in++]="***";
                 buf=NULL; }

   printf("Here we have %d stringsn",in);
   for (int j=0; j

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C语言切割多层字符串(strtok_r strtok使用方法)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3