File: *manpages*,  Node: memmem,  Up: (dir)



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

