NOMBRE¶
memmem - localiza una subcadena
SINOPSIS¶
#define _GNU_SOURCE
#include <string.h>
void *memmem(const void *haystack, size_t haystacklen,
const void *needle, size_t needlelen);
DESCRIPCIÓN¶
La función
memmem() busca el principio de la primera ocurrencia de
la subcadena
needle de longitud
needlelen en el área de
memoria
haystack de longitud
haystacklen.
VALOR DEVUELTO¶
La función
memmem() devuelve un puntero al principio de la
subcadena, o NULL si la subcadena no se encuentra.
Esta función es una extensión GNU.
FALLOS¶
Esta función se adaptó a las bibliotecas de Linux y se
incluyó a partir de la versión 5.0.9 de libc; allí los
argumentos `needle' y `haystack' estaban intercambiados y se devolvía
un puntero al final de la primera ocurrencia de
needle. Ya que
todavía se usa ampliamente libc 5.0.9, es peligroso utilizar esta
función.
Tanto la antigua como la nueva libc tienen el fallo de que si
needle es
vacío, se devuelve
haystack-1 (en lugar de
haystack). Y
glibc 2.0 lo hace peor todavía y devuelve un puntero al último
byte de `haystack'. Ésto ha sido solucionado en glibc 2.1.
VÉASE TAMBIÉN¶
strstr(3)