数组查找函数
最近解析数据帧需要,写了个数组查找函数。类似于strstr(),但是strstr()不能查找带有'\0'的数组--即只能查找字符串。
自己也是在网上找了一圈,没看到适用的,就写了个放上来,大家有需要的参考下。
代码如下:
/*
str:要在这个指针所指的数组里查询(长的)
substr:要查找的数组段(短的)
strlen :src长度(Bytres)
substrlen :sdr长度(Bytes)
返回 :找到返回第一次出现的地址指针,找不到返回NULL
说明 :临时写的,不保证完全没有BUG,但是正确传参的话应该是正常运行
*/
u8* My_strstr(u8* str,u8*substr,u16 strlen ,u16 substrlen )
{
u8 *p1=str,*p2=substr;
u16 i=0,j=0;
while(i<strlen -substrlen )
{
if(p1[i]!=p2[0])
i++;
else
while(j<substrlen )
{
j++;
if(p1[i+j]!=p2[j])
{
i++;
j=0;
break;
}
if(j==substrlen -1)
return (u8*)(p1+i);
}
}
return NULL;
}
结语
如有bug欢迎大家指正。