1)strtok 头文件<string.h>
2)原型 :char *strtok(char *str,const char *delimiters)
3)功能:切割字符串str,将str分割成以delimiters为分割点的一个个字串,并返回
4)用法:
char str[128] = "hello@world@I@love@you";
char *temp = myStrtok(str,"@");
while(temp)
{
printf("temp = %s\n",temp);
temp = myStrtok(NULL,"0");
}
5)自己实现:
char *myStrtok_origin(char *str_arr,const char *delimiters,char **temp_str)
{
char *ptr_temp = NULL;//指向待分解的字符串
/* * 1、判断参数str_arr是否为空,如果是NULL就以传递进来的temp_str作为起始位置; * 若不是NULL,则以str为起始位置开始切分。 */ if(str_arr == NULL) str_arr = *temp_str;
str_arr += strspn(str_arr,delimiters);//扫描delimiters字符开始的所有分解符
if(*str_arr == '\0') //3、判断当前待分解的位置是否为'\0',若是则返回NULL,否则继续
return NULL;
ptr_temp = str_arr;
str_arr = strpbrk(str_arr,delimiters);
if(str_arr == NULL)
*temp_str = strchr(ptr_temp,'\0');
else
{
*str_arr = '\0';
*temp_str = str_arr + 1;
}
return ptr_temp;
}
char *myStrtok(char *str_arr,const char *delimiters)
{
static char *last;
return myStrtok_origin(str_arr,delimiters,&last);
}
经实践分割正常。