Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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_errlista _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_spole _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.