table of contents
other languages
other sections
MEMMEM(3) | Linux Programmer's Manual | MEMMEM(3) |
NAME¶
memmem - locate a substringSYNOPSIS¶
#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 occurrence 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)January 13, 1998 | GNU |