• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

Strstr()是用在字符串比较的,有没有用于相应二进制串比较的呢??在线等待!

davlong 2002-05-08 01:44:58
就是在一串二进制串中查找一段二进制串!
...全文
96 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
davlong 2002-05-08
小生才学浅薄哦,所以要请教。
回复
davlong 2002-05-08
小生才学浅薄哦,所以要请教。
回复
davlong 2002-05-08
小生才学浅薄哦,所以要请教。
回复
apocn 2002-05-08
开玩笑,0x00 == “\n" ,表示字符串结束。你假设字符串中存在0x00那是字符串的问题,关strstr()什么事,在说有0x00(NULL)(\n)的话msdn的函数都会停。当然可以写一个,但遇到了0x00瘟神们不停下来。
回复
davlong 2002-05-08
谢谢,结分
回复
z_sky 2002-05-08
好吧,现写个给你,也许有错,仅供参考:
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;
}
回复
davlong 2002-05-08
我就是指所要比较的二进制里面一旦有0X00(NULL) Strstr()就不能再比较下去啊。怎么办??
回复
z_sky 2002-05-08
好吧,现写个给你,也许有错,仅供参考:
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;
}
回复
z_sky 2002-05-08
好吧,现写个给你,也许有错,仅供参考:
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;
}
回复
apocn 2002-05-08
不会吧,二进制中间的“0”是0x30 , 又不是0x00(NULL)怎会不行呢?
回复
davlong 2002-05-08
z_sky(),可以举个例子吗?
回复
他乡异客1 2002-05-08
memcmp就是二进制比较
回复
apocn 2002-05-08
把二进制串当作字符串不就可以吗?
回复
davlong 2002-05-08
这样是不行的,因为strstr比较的时候以空字符为结束,所以当二进制中间
有空字符(二进制为“00”)的时候,比较到中间就停下来了,不能再往下
比较,我想全部比较。
回复
z_sky 2002-05-08
没有,你可以用memcmp从头开始循环比较来实现。
回复
pp_ipr 2002-05-08
不懂,strstr不行吗,你把二进制串也看成字符串
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2002-05-08 01:44
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……