Partager via


_lfind

Exécute une recherche linéaire pour la clé spécifiée.un plus version sécurisée de cette fonction est disponible ; consultez _lfind_s.

void *_lfind(
   const void *key,
   const 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 de données de correspondance.

  • num
    Nombre d'éléments de tableau.

  • width
    largeur des éléments de tableau.

  • compare
    Pointeur vers la routine de comparaison.le premier paramètre est un pointeur à indexer pour la recherche.Le deuxième paramètre est un pointeur vers l'élément de tableau à comparer à la clé.

Valeur de retour

Si la clé est trouvée, _lfind retourne un pointeur vers l'élément du tableau à l'adresse base qui correspond à key.Si la clé est introuvable, _lfind retourne NULL.

Notes

La fonction d' _lfind 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, _lfind ne requiert pas le tableau à trier.L'argument d' base est un pointeur vers la base du tableau à rechercher.L'argument d' compare est un pointeur vers une routine fournie par l'utilisateur qui compare deux éléments de tableau puis retourne une valeur spécifiant leur relation._lfind appelle la routine d' compare une ou plusieurs fois pendant la recherche, en passant des pointeurs vers deux éléments de tableau à chaque appel.La routine d' compare doit comparer les éléments puis l'une valeur différente de zéro de retour (c'est-à-dire les éléments et sont différent) ou le 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

_lfind

<search.h>

Pour plus d'informations de compatibilité, consultez compatibilité dans l'introduction.

Exemple

// crt_lfind.c
// This program uses _lfind to search a string array
// for an occurrence of "hello".

#include <search.h>
#include <string.h>
#include <stdio.h>

int compare(const void *arg1, const void *arg2 )
{
   return( _stricmp( * (char**)arg1, * (char**)arg2 ) );
}

int main( )
{
   char *arr[] = {"Hi", "Hello", "Bye"};
   int n = sizeof(arr) / sizeof(char*);
   char **result;
   char *key = "hello";

   result = (char **)_lfind( &key, arr, 
                      &n, sizeof(char *), compare );

   if( result )
      printf( "%s found\n", *result );
   else
      printf( "hello not found!\n" );
}
  

Équivalent .NET Framework

System : : collections : : ArrayList : : contient

Voir aussi

Référence

Rechercher et trier

_lfind_s

bsearch

_lsearch

qsort