_lfind

Effectue une recherche linéaire pour la clé spécifiée. Des versions plus sécurisées de ces fonctions sont disponibles ; 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 recherche.

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

  • width
    Largeur des éléments de tableau.

  • compare
    Pointeur vers la routine de comparaison. Le premier paramètre est un pointeur vers la clé pour la recherche. Le second paramètre est un pointeur vers un é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 à base qui correspond à key . Si la clé n'est pas trouvée _lfind retourne NULL.

Notes

La fonction _lfind effectue une recherche séquentielle pour la valeur key dans un tableau d'éléments de num éléments, chacun de width octets. Contrairement à bsearch, _lfind ne nécessite pas que le tableau soit trié. L'argument base est un pointeur vers la base du tableau à trier. La fonction compare est un pointeur vers une routine fournie à l'utilisateur, qui compare deux éléments de tableau et retourne une valeur qui spécifie leur relation. _lfind appelle la routine compare une ou plusieurs fois lors de la recherche, passant les pointeurs vers deux éléments de tableau à chaque appel: La routine compare doit comparer les éléments et puis retourner une valeur différente de zéro (c'est-à-dire que les éléments sont différents) ou 0 (ce qui signifie les éléments sont identiques).

Cette fonction valide ses paramètres. Si compare, key ou num est NULL, ou si base est différent de zéro, et *num est différent de zéro, ou si width est inférieure à 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 est défini à EINVAL et la fonction retourne NULL.

Configuration requise

Routine

En-tête requis

_lfind

<Rechercher>

Pour plus d'informations sur la 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::Contains

Voir aussi

Référence

Recherche et tri

_lfind_s

bsearch

_lsearch

qsort