#include <stdio.h>
#include <stdlib.h>
bool isContained(const char *str, char c)
{
if (str == NULL)
{
return false;
}
const char *p = str;
while (*p != '\0')
{
if (*p == c)
{
return true;
}
p++;
}
return false;
}
//*save_ptr等价于以前的静态指针
char *myStrtok_r(char* string_org,const char* demial, char **save_ptr)
{
char *str = NULL; //返回的字符串
const char *ctrl = demial; //分隔符
if (demial == NULL)
{
return NULL;
}
if (string_org == NULL && *save_ptr == NULL)
{
return NULL;
}
//将分隔符放入map中
char map[255] = {0};
size_t len = 0;
while (*ctrl != '\0')
{
if (isContained(map, *ctrl))
{
continue;
}
map[len] = *ctrl;
len++;
ctrl++;
}
if (string_org == NULL)
{
str = *save_ptr;
}
else
{
str = string_org;
}
//忽略掉字符串中起始部分的分隔符,找到第一个不是分隔符的字符指针
C语言实现strtok与strtok_r
最新推荐文章于 2024-06-20 05:00:00 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)