我有一块内存,我需要搜索2个连续的字符。
我无法使用strstr,因为我的内存块可能包含' \ 0',而memchr只搜索单个字符。是否有一些类似于strstr的函数,适用于非null终止,或者我应该使用memchr,然后手动检查下一个元素。感谢。
答案 0 :(得分:2)
for (p = memstart; p <= (memstart + memsize - stringsize); p++)
{
if (memcmp(p, string, stringsize) == 0)
return p; /* found */
}
return NULL; /* not found */
http://www.koders.com/c/fidD66F4C2F1935B0FF6158A83C4FBF134C4432F5CF.aspx
答案 1 :(得分:2)
C ++的方法是:
char* result = std::search_n( mem, mem + size, 2, c );
其中mem
是缓冲区的开头,size
是以字节为单位的大小,c
是要搜索的字符。如果未找到匹配项,search_n应返回mem + size
。