_lsearch
Exécute une recherche linéaire pour une valeur ; ajoute à la fin de la liste si non trouvée.un plus version sécurisée de cette fonction est disponible ; consultez _lsearch_s.
void *_lsearch(
const void *key,
void *base,
unsigned int *num,
unsigned int width,
int (__cdecl *compare)(const void *, const void *)
);
Paramètres
key
Objet à rechercher.base
Pointeur vers la base du tableau à rechercher.num
Nombre d'éléments.width
largeur de chaque élément de tableau.compare
Pointeur vers la routine de comparaison.Le premier paramètre est un pointeur à la clé de la recherche.Le deuxième paramètre est un pointeur vers un élément de tableau à comparer à la clé.
Valeur de retour
Si la clé est trouvée, _lsearch retourne un pointeur vers l'élément du tableau à l'adresse base qui correspond à key.Si la clé est introuvable, _lsearch retourne un pointeur vers l'élément récemment ajouté à la fin de le tableau.
Notes
La fonction d' _lsearch exécute une recherche linéaire pour la valeur key dans un tableau d'éléments d' num , chacun d'octets d' width .Contrairement à bsearch, _lsearch ne requiert pas le tableau à trier.Si key est introuvable, _lsearch l'ajoute à la fin de le tableau et incrémente num.
L'argument d' compare est un pointeur vers une routine fournie par l'utilisateur qui compare deux éléments de tableau et retourne une valeur spécifiant leur relation._lsearch appelle la routine d' compare une ou plusieurs fois pendant la recherche, en passant des pointeurs vers deux éléments de tableau à chaque appel.compare doit comparer les éléments et retourner une valeur différente de zéro (c'est-à-dire les éléments et sont différent) ou 0 (en c'est-à-dire les éléments et sont identiques).
cette fonction valide ses paramètres.Si compare, key ou num est NULL, ou si base est NULL et *num est différent de zéro, ou si width est inférieur à zéro, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, errno est défini à EINVAL et la fonction retourne NULL.
Configuration requise
routine |
en-tête requis |
---|---|
_lsearch |
<search.h> |
Pour plus d'informations de compatibilité, consultez compatibilité dans l'introduction.
Exemple
// crt_lsearch.c
#include <search.h>
#include <string.h>
#include <stdio.h>
int compare( const void *arg1, const void *arg2 );
int main(void)
{
char * wordlist[4] = { "hello", "thanks", "bye" };
// leave room to grow...
int n = 3;
char **result;
char *key = "extra";
int i;
printf( "wordlist before _lsearch:" );
for( i=0; i<n; ++i ) printf( " %s", wordlist[i] );
printf( "\n" );
result = (char **)_lsearch( &key, wordlist,
&n, sizeof(char *), compare );
printf( "wordlist after _lsearch:" );
for( i=0; i<n; ++i ) printf( " %s", wordlist[i] );
printf( "\n" );
}
int compare(const void *arg1, const void *arg2 )
{
return( _stricmp( * (char**)arg1, * (char**)arg2 ) );
}
Équivalent .NET Framework
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.