memmem — locate a substring
#define _GNU_SOURCE #include <string.h>
void
*memmem( |
const void * | haystack, |
size_t | haystacklen, | |
const void * | needle, | |
size_t | needlelen) ; |
The memmem
() function finds
the start of the first occurrence of the substring needle
of length needlelen
in the memory area
haystack
of length
haystacklen
.
The memmem
() function
returns a pointer to the beginning of the substring, or NULL
if the substring is not found.
This function was broken in Linux libraries up to and
including libc 5.0.9; there the needle
and haystack
arguments were
interchanged, and a pointer to the end of the first
occurrence of needle
was returned. Since libc 5.0.9 is still widely used, this is
a dangerous function to use.
Both old and new libc's have the bug that if needle
is empty haystack
−1 (instead of
haystack
) is
returned. And glibc 2.0 makes it worse, and returns a pointer
to the last byte of haystack
. This is fixed in
glibc 2.1.
strstr(3), feature_test_macros(7)
|