_lfind

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Effectue une recherche linéaire de la clé spécifiée. Une version plus sécurisée de cette fonction est disponible ; consultez la page _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 recherche.

num
Nombre d’éléments du tableau.

width
Largeur d’éléments du tableau.

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

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

Le _lfind fonction effectue une recherche linéaire pour la valeur key dans un tableau de num éléments, chacun des width octets. Contrairement aux bsearch, _lfind ne nécessite pas le tableau à trier. Le base est un pointeur vers la base du tableau à rechercher. Le compare est un pointeur vers une routine fournie par l’utilisateur qui compare deux éléments du tableau, puis retourne une valeur qui spécifie la relation. _lfindappelle le compare routines une ou plusieurs fois lors de la recherche, le passage de pointeurs vers deux éléments de tableau à chaque appel. Le compare routine doit comparer les éléments, puis revenez différente de zéro (ce qui signifie que les éléments sont différents) ou 0 (ce qui signifie que les éléments sont identiques).

Cette fonction valide ses paramètres. Si compare, key ou num est NULL, ou si base a la valeur 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 de paramètre. Si l'exécution est autorisée à se poursuivre, errno a la valeur EINVAL et la fonction retourne une valeur NULL.

RoutineEn-tête requis
_lfind<search.h></search.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility dans l’introduction.

// 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" );  
}  

Hello found  

System::Collections::ArrayList :: contient

Recherche et tri
_lfind_s
bsearch
_lsearch
qsort

Afficher: