_lsearch_s
Provede lineární hledání hodnoty. Verze _lsearch
s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v 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
);
Parametry
key
Objekt, který chcete vyhledat.
base
Ukazatel na základ pole, který se má prohledávat.
number
Počet prvků
size
Velikost každého prvku pole v bajtech
compare
Ukazatel na rutinu porovnání. Druhý parametr je ukazatel na klíč pro hledání. Třetí parametr je ukazatel na prvek pole, který se má porovnat s klíčem.
context
Ukazatel na objekt, ke kterému může být přístup v porovnávací funkci.
Vrácená hodnota
Pokud key
se najde, _lsearch_s
vrátí ukazatel na prvek pole, který base
odpovídá key
. Pokud key
se nenajde, _lsearch_s
vrátí ukazatel na nově přidanou položku na konci pole.
Pokud jsou funkci předány neplatné parametry, vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, errno
je nastavena na EINVAL
a funkce vrátí NULL
. Další informace naleznete v tématu errno
, _doserrno
, _sys_errlist
a _sys_nerr
.
Chybové podmínky
key |
base |
compare |
number |
size |
errno |
---|---|---|---|---|---|
NULL |
jakékoliv | jakékoliv | jakékoliv | jakékoliv | EINVAL |
jakékoliv | NULL |
jakékoliv | != 0 | jakékoliv | EINVAL |
jakékoliv | jakékoliv | jakékoliv | jakékoliv | žádný | EINVAL |
jakékoliv | jakékoliv | NULL |
an | jakékoliv | EINVAL |
Poznámky
Funkce _lsearch_s
provádí lineární vyhledávání hodnoty key
v matici number
prvků, z nichž každý z size
bajtů. Na rozdíl od bsearch_s
pole _lsearch_s
nevyžaduje řazení. Pokud key
se nenajde, přidá _lsearch_s
ho na konec pole a přírůstky number
.
Funkce compare
je ukazatel na rutinu zadanou uživatelem, která porovnává dva prvky pole a vrací hodnotu určující jejich relaci. Funkce compare
také vezme ukazatel na kontext jako první argument. _lsearch_s
volá compare
jeden nebo vícekrát během hledání a předává ukazatele na dva prvky pole při každém volání. compare
musí porovnat prvky a poté vrátit nenulový (tj. prvky jsou odlišné) nebo 0 (tj. prvky jsou identické).
Ukazatel context
může být užitečný, pokud je prohledáná datová struktura součástí objektu a compare
funkce potřebuje přístup k členům objektu. Například kód ve compare
funkci může přetypovat ukazatel void na příslušný typ objektu a přistupovat k členům tohoto objektu. Přidání context
ukazatele je _lsearch_s
bezpečnější, protože je možné použít další kontext, aby se zabránilo opakovaným chybám přidruženým k použití statických proměnných k zpřístupnění compare
dat pro funkci.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_lsearch_s |
<search.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.