_lsearch_s
Exécute une recherche linéaire pour une valeur.Une version de _lsearch avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du CRT.
void *_lsearch_s(
const void *key,
void *base,
unsigned int *num,
size_t size,
int (__cdecl *compare)(void *, const void *, const void *),
void * context
);
Paramètres
key
Objet à rechercher.base
Pointeur vers la base du tableau à rechercher.num
Nombre d'éléments.size
taille de chaque élément de tableau en octets.compare
Pointeur vers la routine de comparaison.Le deuxième paramètre est un pointeur à la clé de la recherche.Le troisième est un pointeur vers un élément de tableau à comparer à la clé.context
Un pointeur vers un objet qui peut être accédé depuis la fonction de comparaison.
Valeur de retour
Si key est trouvé, _lsearch_sretourne un pointeur vers l'élément du tableau à l'adresse base qui correspond à key.Si key est introuvable, _lsearch_sretourne un pointeur vers l'élément récemment ajouté à la fin de le tableau.
Si des paramètres incorrects sont passés à la fonction, 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, alors errnoest défini à EINVAL et la fonction retourne NULL.Pour plus d'informations, consultez errno, _doserrno, _sys_errlist, et _sys_nerr.
conditions d'erreur
key |
base |
compare |
num |
size |
errno |
---|---|---|---|---|---|
NULL |
quels |
quels |
quels |
quels |
EINVAL |
quels |
NULL |
quels |
!= 0 |
quels |
EINVAL |
quels |
quels |
quels |
quels |
zéro |
EINVAL |
quels |
quels |
NULL |
un |
quels |
EINVAL |
Notes
La fonction d' _lsearch_s 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_s, _lsearch_s ne requiert pas le tableau à trier.Si key est introuvable, alors _lsearch_s l'ajoute à la fin de le tableau et incrémente num.
La fonction 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.la fonction d' compare prend également le pointeur au contexte comme premier argument._lsearch_s appelle 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 puis 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).
Le pointeur d' context peut être utile si la structure de données trouvée fait partie d'un objet et la fonction d' compare doit accéder aux membres de l'objet.Par exemple, le code dans la fonction d' compare peut effectuer un cast du pointeur void dans le type d'objet approprié et accéder aux membres de cet objet.L'ajout du pointeur d' context rend _lsearch_s plus sécurisées car le contexte supplémentaire peut être utilisé pour éviter les bogues de réentrance associés à utiliser des variables statiques de rendre des données disponibles à la fonction d' compare .
Configuration requise
routine |
en-tête requis |
---|---|
_lsearch_s |
<search.h> |
Pour plus d'informations de compatibilité, consultez Compatibilité dans l'introduction.
Équivalent .NET Framework
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de code non managé.