memmem

NAME

memmem - locate a substring

SYNOPSIS

#define _GNU_SOURCE

#include <string.h> I void *memmem(const void * haystack , size_t haystacklen , I const void * needle , size_t needlelen );

DESCRIPTION

The R 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 R 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 makes it worse, and returns a pointer to the last byte of haystack. This is fixed in glibc 2.1.

SEE ALSO