Partager via


_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é.

Voir aussi

Référence

Rechercher et trier

bsearch

_lfind

_lsearch_s