Поиск в памяти (Нужен аналог strstr для массива байт)

Модератор: Модераторы разделов

_petya_
Сообщения: 53

Поиск в памяти

Сообщение _petya_ »

Требуется найти подстроку из произвольных байт в массиве байт. Какую функцию стандартной библиотеки следует использовать?
Спасибо сказали:
Аватара пользователя
Женя Подсыпальников
Сообщения: 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;
}


Здесь - по успеху - индекс находки А в В, меньший длины В :)
Пойдём на рыбалку !
Спасибо сказали: