当前位置: 技术问答>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
#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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!