/*************************************************************************
> File Name: my_strtok.c
> Author: 钁e疂灞? > Mail: 1576281874@qq.com
> Created Time: 2014骞?8鏈?2鏃?鏄熸湡浜?19鏃?6鍒?4绉? > :The One NEO's Love
************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
char * my_strtok(char *s, const char*test)
{
static char *last;
char *tok;
if(s==NULL)
{
s=last;
}
if(s==NULL)
{
return NULL;
}
tok=s;
const char *test1=test;
int i=1;
int flag;
while(*s)
{
while(*test)
{
if(*s==*test)
{
if((i!=1)&&((i-flag)!=1))
{
*s='\0';
last=s+1;
return tok;
}
else
{
flag=i;
tok++;
}
}
test++;
}
test=test1;
i++;
s++;
}
last=NULL;
return tok;
}
char * my_strtok1(char *s, const char*test)
{
static char *last;
if(s==NULL)
{
s=last;
}
if(s==NULL)
{
return NULL;
}
char *tok;
s+=strspn(s,test);
tok=s;
s= strpbrk(tok,test);
if(s==NULL)
{
last=NULL;
return tok;
}
else
{
*s='\0';
last=s+1;
return tok;
}
}
char *my_strtok_r(char *s,const char *delim,char **save_ptr)
{
char *token;
if(s==NULL)
s=*save_ptr;
s+=strspn(s,delim);
token = s;
s = strpbrk(token,delim);
if(s==NULL)
*save_ptr=strchr(token,'\0');
else
{
*s='\0';
*save_ptr = s + 1;
}
return token;
}
char *my_strtok2(char*s,const char *test)
{
static char *last;
return (my_strtok_r(s,test,&last));
}
int main()
{
char a[]="ddffffdggdfggdfghhhfjjfdgghdfhghg";
char *str1;
printf("%s\n",my_strtok2(a,"f"));
while(1)
{
str1=my_strtok2(NULL,"f");
if(str1==NULL)
{
printf("end\n");
return 0;
}
printf("%s\n",str1);
sleep(1);
}
return 0;
}