Поиск в памяти (Нужен аналог strstr для массива байт)
Модератор: Модераторы разделов
-
_petya_
- Сообщения: 53
Поиск в памяти
Требуется найти подстроку из произвольных байт в массиве байт. Какую функцию стандартной библиотеки следует использовать?
-
Женя Подсыпальников
- Сообщения: 482
Re: Поиск в памяти
memcmp(..) , однако...
Здесь - по успеху - индекс находки А в В, меньший длины В
Код: Выделить всё
UINT FindAinB(BYTE* pbyB, BYTE* pbyA, UINT uiALen, UINT uiBLen)
{
BYTE* pPos = pbyB;
UINT uiOffset = 1;
while (uiOffset < uiBLen && pPos++) {
pPos = (BYTE*) memchr(pPos, pbyA[0], uiBLen - (pPos - pbyB));
if (pPos && 0 == memcmp(pPos, pbyA, uiALen)) {
return (UINT) (pPos - pbyB);
}
}
return uiBLen;
}Здесь - по успеху - индекс находки А в В, меньший длины В
Пойдём на рыбалку !