看别人代码,发现字符串查找的一个方法,就是头尾比较,然后再对这个头尾区间的内存竟然比较,最终确定是否找到。
觉得自己之前没想到,回家后自己实现了一个,或者自己编程不够丰富哈哈。
(看比自己强的人写的代码是一种学习!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