Partager via


_lsearch_s

Effectue une recherche linéaire sur la valeur. Il s'agit de versions de _lsearch avec des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le 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 de la table à rechercher.

  • num
    Nombre d'éléments

  • size
    Taille de chaque élément du tableau en octets.

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

  • context
    Un pointeur vers un objet, qui peut être accessible dans la fonction de comparaison.

Valeur de retour

Si key est trouvé, _lsearch_s retourne un pointeur vers l'élément du tableau à la base qui correspond à key. Si key est introuvable, _lsearch_s retourne un pointeur sur l'élément récemment ajouté à la fin du tableau.

Si des paramètres non valides sont transmis à la fonction, 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, ces fonctions définissent errno avec la valeur EINVAL et retournent NULL. Pour plus d'informations, consultez errno, _doserrno, _sys_errlist et _sys_nerr.

Conditions d'erreur

key

base

compare

num

size

errno

NULL

any

any

any

any

EINVAL

any

NULL

any

!= 0

any

EINVAL

any

any

any

any

zéro

EINVAL

any

any

NULL

Un

any

EINVAL

Notes

La fonction _lsearch_s effectue une recherche séquentielle pour la valeur key dans un tableau d'éléments de numéléments, chacun dewidthoctets. Contrairement à bsearch_s, _lsearch_s ne nécessite pas que le tableau soit trié. Si key est introuvable, alors _lsearch_s l'ajoute à la fin de la table et incrémente num.

La fonction compare est un pointeur à une routine fournie à l'utilisateur qui compare deux éléments de tableau et retourne une valeur qui spécifie leur relation. La fonction compare prend également le pointeur au contexte comme premier argument. _lsearch_s appelle compare à une ou plusieurs reprises lors de la recherche, en passant des pointeurs vers deux éléments de tableau à chaque appel. compare doit comparer les éléments puis retourner ou 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).

Le pointeur de context peut être utile si la structure de données est fait partie d'un objet et que la fonction compare doit accéder à des membres de l'objet. Par exemple, le code de la fonction compare peut convertir le pointeur void au type objet approprié et accéder aux membres de cet objet. L'ajout du pointeur context permet de rendre_lsearch_s plus sécurisé car le contexte supplémentaire peut être utilisé pour éviter les bogues de reentrées associés à l'utilisation des variables statiques pour rendre les données disponibles à la fonction compare.

Configuration requise

Routine

En-tête requis

_lsearch_s

<Rechercher>

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

Recherche et tri

bsearch_s

_lfind_s

_lsearch