Computer Science
MEMMEM(3) Linux Programmer's Manual MEMMEM(3)
NAME
memmem - locate a substring
SYNOPSIS
#include <string.h>
void *memmem(const void *haystack, size_t haystacklen,
const void *needle, size_t needlelen);
DESCRIPTION
The memmem() function finds the start of the first occur-
rence of the substring needle of length needlelen in the
memory area haystack of length haystacklen.
RETURN VALUE
The memmem() function returns a pointer to the beginning
of the substring, or NULL if the substring is not found.
CONFORMING TO
This function is a GNU extension.
BUGS
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.5) makes it worse, and returns a pointer to the
last byte of `haystack'. Hopefully this will be fixed.
For the time being, memmem() should not be used with an
empty `needle'.
SEE ALSO
strstr(3)
GNU January 13, 1998 1
Back to the index