MEMMEM(3)

NOM
memmem - Rechercher une sous-chaîne

SYNOPSIS
#define _GNU_SOURCE
#include <string.h>

void *memmem(const void *meule_de_foin, size_t lg_meule,
             const void *aiguille, size_t lg_aiguille);

DESCRIPTION
La fonction memmem() recherche le début de la première occurrence de la sous-chaîne aiguille de longueur lg_aiguille au sein de la zone de mémoire meule_de_foin de longueur lg_meule.

VALEUR RENVOYÉE
La fonction memmem() renvoie un pointeur sur le début de la sous-chaîne, ou NULL si aucune sous-chaîne n'est trouvée.

CONFORMITÉ
Cette fonction est une extension GNU.

BOGUES
Cette fonction ne fonctionnait pas avec les bibliothèques Linux jusqu'à libc 5.0.9 incluse, car les arguments aiguille (Ndt : needle) et meule_de_foin (Ndt : haystack) étaient inversés. De plus, la fonction renvoyait un pointeur sur la fin de la première occurrence de l'aiguille. Comme la bibliothèque libc 5.0.9 est encore très largement répandue, cette fonction est dangereuse à utiliser.
Un bogue supplémentaire existait dans toutes les bibliothèques libc : si la chaîne aiguille est vide, la fonction renvoie meule_de_foin-1 (au lieu de meule_de_foin). La bibliothèque glibc 2.0 était encore pire, puisqu'elle renvoyait un pointeur sur le dernier octet de la meule_de_foin. Ceci a été corrigé dans la glibc 2.1

VOIR AUSSI
strstr(3), feature_test_macros(7)

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 4 novembre 1996 et révisée le 17 juillet 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 memmem ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.