Чистая байтовая версия strstr?

Существует ли версия strstr, которая работает с фиксированной длиной памяти, которая может содержать нулевые символы?

Я мог бы рассказать о моем вопросе следующим образом: strncpy является memcpy, поскольку strstr?

Ответ 1

memmem, к сожалению, он скорее соответствует GNU, чем стандарту C. Однако он с открытым исходным кодом, поэтому вы можете скопировать код (если лицензия поддается вам).

Ответ 2

Не в стандартной стандартной библиотеке (что не так уж и важно, так что посмотрите). Однако писать свои собственные тривиально, либо напрямую байт по байту, либо используя memchr(), за которым следует memcmp() итеративно.

Ответ 3

В стандартной библиотеке нет. Однако быстрый поиск Google для "безопасной библиотеки строк c" приводит к нескольким потенциально полезным результатам. Не зная больше о задаче, которую вы пытаетесь выполнить, я не могу рекомендовать какую-либо конкретную стороннюю реализацию.

Если это единственная "безопасная" функция, которая вам нужна, помимо стандартных функций, то лучше всего использовать свои собственные, а не тратить усилия на интеграцию сторонней библиотеки, если вы уверены, что можете сделать поэтому без введения дополнительных ошибок.