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