Partager via


_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é.

Voir aussi

Référence

Rechercher et trier

bsearch_s

_lfind_s

_lsearch