_lsearch_s
Effectue une recherche linéaire portant sur une valeur. Version des améliorations de _lsearch
sécurité décrites dans les fonctionnalités de sécurité du CRT.
Syntaxe
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 désignant la base du tableau à explorer.
number
Nombre d'éléments.
size
Taille de chaque élément de tableau en octets.
compare
Pointeur désignant la routine de comparaison. Le deuxième paramètre est un pointeur désignant la clé pour la recherche. Le troisième paramètre est un pointeur désignant un élément de tableau à comparer à la clé.
context
Pointeur désignant un objet accessible dans la fonction de comparaison.
Valeur retournée
Si key
est trouvé, _lsearch_s
retourne un pointeur désignant l’élément du tableau à base
qui correspond à key
. S’il key
n’est pas trouvé, _lsearch_s
retourne un pointeur vers l’élément nouvellement ajouté à la fin du tableau.
Si des paramètres non valides sont passés à la fonction, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l’exécution est autorisée à se poursuivre, errno
est défini sur EINVAL
et la fonction retourne NULL
. Pour plus d'informations, voir errno
, _doserrno
, _sys_errlist
et _sys_nerr
.
Conditions d’erreur
key |
base |
compare |
number |
size |
errno |
---|---|---|---|---|---|
NULL |
n'importe laquelle | tous | tous | tous | EINVAL |
tous | NULL |
n'importe laquelle | != 0 | n'importe laquelle | EINVAL |
tous | tous | tous | n'importe laquelle | zero | EINVAL |
n'importe laquelle | n'importe laquelle | NULL |
an | n'importe laquelle | EINVAL |
Notes
La fonction _lsearch_s
effectue une recherche linéaire portant sur la valeur key
dans un tableau de number
éléments, chacun d’une taille de size
octets. Contrairement bsearch_s
à , _lsearch_s
ne nécessite pas le tri du tableau. S’il key
n’est pas trouvé, _lsearch_s
il l’ajoute à la fin du tableau et incrémente number
.
La fonction compare
est un pointeur désignant une routine fournie par l’utilisateur qui compare deux éléments de tableau et retourne une valeur spécifiant leur relation. La fonction compare
accepte également le pointeur désignant le contexte comme premier argument. _lsearch_s
appelle compare
une ou plusieurs fois pendant la recherche, passant les pointeurs désignant deux éléments de tableau à chaque appel. compare
doit comparer les éléments, puis retourner une valeur différente de zéro (les éléments sont différents) ou 0 (les éléments sont identiques).
Le pointeur context
peut être utile si la structure de données explorée fait partie d’un objet et que la fonction compare
doit accéder aux membres de l’objet. Par exemple, le code dans la fonction compare
peut effectuer un cast du pointeur void vers le type d’objet approprié et accéder aux membres de cet objet. L’ajout du context
pointeur rend _lsearch_s
plus sécurisé, car un contexte supplémentaire peut être utilisé pour éviter les bogues de réentrance associés à l’utilisation de variables statiques pour rendre les données disponibles pour la compare
fonction.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Spécifications
Routine | En-tête requis |
---|---|
_lsearch_s |
<search.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.