Strstr()是用在字符串比较的,有没有用于相应二进制串比较的呢??在线等待! 不懂,strstr不行吗,你把二进制串也看成字符串 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有,你可以用memcmp从头开始循环比较来实现。 这样是不行的,因为strstr比较的时候以空字符为结束,所以当二进制中间有空字符(二进制为“00”)的时候,比较到中间就停下来了,不能再往下比较,我想全部比较。 z_sky(),可以举个例子吗? 不会吧,二进制中间的“0”是0x30 , 又不是0x00(NULL)怎会不行呢? 好吧,现写个给你,也许有错,仅供参考:void *memmem(void *mem1, int len1, void *mem2, int len2){ if (len1<len2) return NULL; for(int i=0;i<len1-len2;i++) if (memcmp(mem1+i,mem2,len2)==0) return mem1+i; return NULL;} 好吧,现写个给你,也许有错,仅供参考:void *memmem(void *mem1, int len1, void *mem2, int len2){ int i; for(i=0;i<=len1-len2;i++) if (memcmp(mem1+i,mem2,len2)==0) return mem1+i; return NULL;} 我就是指所要比较的二进制里面一旦有0X00(NULL) Strstr()就不能再比较下去啊。怎么办?? 好吧,现写个给你,也许有错,仅供参考:void *memmem(void *mem1, int len1, void *mem2, int len2){ int i; for(i=0;i<=len1-len2;i++) if (memcmp(mem1+i,mem2,len2)==0) return mem1+i; return NULL;} 开玩笑,0x00 == “\n" ,表示字符串结束。你假设字符串中存在0x00那是字符串的问题,关strstr()什么事,在说有0x00(NULL)(\n)的话msdn的函数都会停。当然可以写一个,但遇到了0x00瘟神们不停下来。 CSDN上是穷人越来越穷,富人越来越富 CStatic无法更改背景颜色 WTL 请教金山Office打开word文件的原理! 大家帮我看看可能出现的情况 请问异步通讯如何加快接受端接受数据的速度 有谁用过大恒公司得DH-CG400得图像采集卡? 到那可以下载Visual Studio Installer 请问一个VC的简单小问题 如何使一个基于对话框的程序总在最前面? 如何只刷新对话框中指定控件的显示数据而不影响其他空件的显示数据? 为什么这样得不到记录数 请问各位,在退出程序时提醒用户保存数据的代码应该放在哪个事件里?
有空字符(二进制为“00”)的时候,比较到中间就停下来了,不能再往下
比较,我想全部比较。
void *memmem(void *mem1, int len1, void *mem2, int len2)
{
if (len1<len2) return NULL;
for(int i=0;i<len1-len2;i++)
if (memcmp(mem1+i,mem2,len2)==0) return mem1+i;
return NULL;
}
void *memmem(void *mem1, int len1, void *mem2, int len2)
{
int i;
for(i=0;i<=len1-len2;i++)
if (memcmp(mem1+i,mem2,len2)==0) return mem1+i;
return NULL;
}
void *memmem(void *mem1, int len1, void *mem2, int len2)
{
int i;
for(i=0;i<=len1-len2;i++)
if (memcmp(mem1+i,mem2,len2)==0) return mem1+i;
return NULL;
}