数组查找函数-可查找含有\0的数组

数组查找函数

最近解析数据帧需要,写了个数组查找函数。类似于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欢迎大家指正。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值