一个字符串查找的函数

看别人代码,发现字符串查找的一个方法,就是头尾比较,然后再对这个头尾区间的内存竟然比较,最终确定是否找到。

觉得自己之前没想到,回家后自己实现了一个,或者自己编程不够丰富哈哈。

(看比自己强的人写的代码是一种学习!O(∩_∩)O)

//找到的话返回指向Dstr的指针,找不到则返回空
//找到头尾字节,然后内存比对
char* StrFind( const char* Sstr, const char* Dstr, size_t Slen, size_t Dlen )
{
    char* pStr = (char*)Sstr;
    char* pEnd = (char*)(Sstr+Slen);
    bool bFind = false;
    while((pStr+Dlen) <= (Sstr+Slen))
    {
        if((pStr =(char*)memchr( pStr, *Dstr, pEnd-pStr)) && (*(pStr+Dlen) == *(Dstr+Dlen)))
        {
            if(!memcmp(pStr,Dstr,Dlen+1))
            {
                bFind = true;
                break;
            }
        }
        if(!pStr)//haven't the str to find
            break;
        pStr++;
    }//end while
    return (bFind?pStr:NULL);
}//end function


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值