Sdílet prostřednictvím


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

Viz také

Vyhledávání a řazení
bsearch_s
_lfind_s
_lsearch