我得到了一塊內存,我需要搜索2個連續的字符。搜索2個連續字符的內存塊
我不能使用strstr,因爲我的內存塊可能包含'\ 0',而memchr只搜索單個字符。是否有一些類似於strstr的函數,適用於非空終止,或者我應該使用memchr,然後手動檢查下一個元素。謝謝。
我得到了一塊內存,我需要搜索2個連續的字符。搜索2個連續字符的內存塊
我不能使用strstr,因爲我的內存塊可能包含'\ 0',而memchr只搜索單個字符。是否有一些類似於strstr的函數,適用於非空終止,或者我應該使用memchr,然後手動檢查下一個元素。謝謝。
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
C++的方式做,這將是:
char* result = std::search_n(mem, mem + size, 2, c);
哪裏mem
是你的緩衝區的開始,size
是以字節爲單位的大小,c
是字符搜索。如果找不到匹配,search_n應該返回mem + size
。
你想要一個C解決方案還是一個C++解決方案? – 2012-03-11 14:06:06
GNU C庫有一個名爲'memmem'的非標準擴展來完成。 – 2012-03-11 14:08:48
http://stackoverflow.com/questions/3280553/memmem-stl-way – 2012-03-11 14:11:46