您的位置:首页 > 其它

strspn()函数和strcspn()函数

2016-07-20 08:47 459 查看
size_t strspn(const char *s, const char *accept)

功能: 用来计算字符串s中从头开始连续有几个字符都属于字符串accept。

函数说明: strspn() 从参数s字符串的开头计算连续的字符,而这些字符都完全是accept所值字符串中的字符。即就是说,若strspn()的返回值为n,就说明字符串s开头连续有n个字符都是属于字符串accept内的字符。

返回值:返回第一次失配前匹配的字符数

注意: 检索的字符是区分大小写的^_^

static void hash_char(const char *accept, char *ch_table)
{
while(*accept != '\0')
{
ch_table[*accept]++;
++accept;
}
}

size_t my_strspn(const char *s, const char *accept)
{
if(s == NULL || accept == NULL)
{
return 0;
}

int match_count = 0;
char ch_table[256] = {0};

hash_char(accept, ch_table);

while(*s != '\0')
{
if(ch_table[*s])
{
match_count++;
}
else
{
return match_count;
}
++s;
}

return match_count;
}


size_t strcspn(const char *s, const char *reject)

功能: 用来计算字符串s从头开始连续有几个字符都不属于字符串reject。

函数说明: strcspn()从参数s字符串的开头计算连续的字符,而这些字符都完全不在参数reject所指的字符串中。即就是说,若strcspn()返回的值为n,就说明字符串s开头连续有n个字符都不含字符串reject内的字符。

返回值: 返回字符串s开头连续不含字符串reject内的字符数目(返回第一次匹配前失配的字符数)。

static void hash_char(const char *reject, char *ch_table)
{
while(*reject != '\0')
{
ch_table[*reject]++;
++reject;
}
}

size_t strcspn(const char *s, const char *reject)
{
if(s == NULL || reject == NULL)
{
return 0;
}

char ch_table[256] = {0};
int no_match_count = 0;

hash_char(reject, ch_table);
while(*reject != '\0')
{
if(!ch_table[*reject])
{
no_match_count++;
}
else
{
return no_match_count;
}
++reject;
}

return no_match_count;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息