重写string.h中的字符串操作函数--strspn和strcspn

函数原型:size_t strspn(const char *string, const char *strcharset)
返回值说明:返回一个整形值,指明字符串strcharset中开头的字符有多少指定的字符。如果返回0说明,在字符串string中未找到指定的字符。
参数说明:
 string:
'/0'结尾的字符串。
 strcharset:
指定的字符串,以'/0'结尾。
函数说明:
  
用来计算字符串string中的开头的字符中指定字符(即strcharset)的个数。
举例说明:


   
char string[] = "1234";
   
char strcharset[] = :01234567";
   
int len = strspn(string, strcharset);//len的值为4
   char string2[] = "8123";
   
int len2 = strspn(string, strcharset);//len2的值为0
  char string3[] = “128676”;
  
int len3 = strspn(string, strcharset);//len3的值为2


 
函数实现:

size_t strspn(const char *stringconst char *strcharset)
{
assert((NULL != 
string) && (NULL != strcharset));
 
const char *p;
 
const  char *s;
 size_t count  = 0;
 
for(p  = string; *p != ''; p++)
 {
   
for(s = strcharset; s !='/0 '; s++)
    {
      
if(*p = =*s)
         
break;
   }
 
if(*a == '/0')
  
return count;//如果在指定串中找不到,则退出,返回个数
  count ++;//否则count1,继续执行
}

return count;
}

   
函数原型:size_t strcspn(const char *string, const char *substrset)
返回值说明:返回一个整形值,指明在字符串string开始的字符中,有多少个不在指定的字符串中。如果string的第一个字符在字符串substrset中,则返回0.
参数说明,与strspn相同。
函数说明:
  strcspn
strspn正好相反,它所计算的是在string开始的字符中,有多少个不在指定的字符串(即substrset)中。strcspnc代表complement(补充物)。
举例说明:

const char *str="hello";
const char *substrset="lo";
int len=strcspn(str, substrset);//len 的值为2
const char *strset2 = “h";
int len2 = strcspn(str, strset2);//len的值为0
const char *strset3 = ”“;//如果指定串为空串,即只有结束符'

函数实现:
size_t strcspn(const char *str, const char *strset)
{
    assert((NULL != str) && (NULL != strset));
    const char *left_str;
    const char *right_str;
    size_t count = 0;
    for (left_str = str; *left_str != '/0'; left_str ++)
    {
        for (right_str = strset;*right_str != '/0'; right_str++)
        {
            if (*left_str == *right_str)
            {
                break;
            }//
如果查找到相同的字符则退出
        }
        if (*left_str == *right_str)
        {
            return count;
        }//
如果有相同的字符,则查找结束,返回结果
        count ++;
    }
    return count;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值