_lsearch_s

Wykonuje wyszukiwanie liniowe dla wartości. Wersja z ulepszeniami zabezpieczeń _lsearch zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.

Składnia

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
Obiekt do wyszukania.

base
Wskaźnik do podstawy tablicy do przeszukania.

number
Liczba elementów.

size
Rozmiar każdego elementu tablicy w bajtach.

compare
Wskaźnik do procedury porównania. Drugi parametr jest wskaźnikiem do klucza wyszukiwania. Trzeci parametr jest wskaźnikiem do elementu tablicy, który ma być porównywany z kluczem.

context
Wskaźnik do obiektu, do którego można uzyskać dostęp w funkcji porównania.

Wartość zwracana

Jeśli key zostanie znaleziona, _lsearch_s zwraca wskaźnik do elementu tablicy, w base którym jest on zgodny keyz parametrem . Jeśli key nie zostanie znaleziony, _lsearch_s zwraca wskaźnik do nowo dodanego elementu na końcu tablicy.

Jeśli do funkcji są przekazywane nieprawidłowe parametry, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, errno jest ustawione na EINVAL , a funkcja zwraca wartość NULL. Aby uzyskać więcej informacji, zobacz errno, _doserrno, _sys_errlisti _sys_nerr.

Warunki błędu

key base compare number size errno
NULL dowolny dowolny dowolny dowolny EINVAL
dowolny NULL dowolny != 0 dowolny EINVAL
dowolny dowolny dowolny dowolny zero EINVAL
dowolny dowolny NULL an dowolny EINVAL

Uwagi

Funkcja _lsearch_s wykonuje liniowe wyszukiwanie wartości key w tablicy number elementów, każdy z bajtów size . W przeciwieństwie do bsearch_smetody , _lsearch_s nie wymaga sortowania tablicy. Jeśli key nie zostanie znaleziona, _lsearch_s dodaj ją na końcu tablicy i zwiększa numberwartość .

Funkcja compare jest wskaźnikiem do procedury dostarczonej przez użytkownika, która porównuje dwa elementy tablicy i zwraca wartość określającą ich relację. Funkcja compare przyjmuje również wskaźnik do kontekstu jako pierwszy argument. _lsearch_s wywołuje compare co najmniej jeden raz podczas wyszukiwania, przekazując wskaźniki do dwóch elementów tablicy w każdym wywołaniu. compare należy porównać elementy, a następnie zwrócić albo niezerowe (co oznacza, że elementy są różne) lub 0 (co oznacza, że elementy są identyczne).

Wskaźnik context może być przydatny, jeśli przeszukana struktura danych jest częścią obiektu, a compare funkcja musi uzyskiwać dostęp do elementów członkowskich obiektu. Na przykład kod w compare funkcji może rzutować wskaźnik void na odpowiedni typ obiektu i uzyskać dostęp do elementów członkowskich tego obiektu. Dodanie wskaźnika zapewnia _lsearch_s większe bezpieczeństwo, ponieważ można użyć dodatkowego context kontekstu, aby uniknąć ponownych błędów związanych z używaniem zmiennych statycznych w celu udostępnienia danych compare funkcji.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Wymagania

Procedura Wymagany nagłówek
_lsearch_s <search.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Zobacz też

Wyszukiwanie i sortowanie
bsearch_s
_lfind_s
_lsearch