_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