memmem

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
MEMMEM(3)		  Linux Programmer’s Manual		    MEMMEM(3)



NAME
       memmem - locate a substring

SYNOPSIS
       #define _GNU_SOURCE
       #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 sub-
       string, 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 makes it
       worse, and returns a pointer to the last byte of ‘haystack’.  This  is
       fixed in glibc 2.1.

SEE ALSO
       strstr(3)



GNU				  1998-01-13			    MEMMEM(3)