Freigeben über


_lsearch_s

Führt eine lineare Suche für einen Wert aus. Eine Version mit _lsearch Sicherheitsverbesserungen, wie in den Sicherheitsfeatures in der CRT beschrieben.

Syntax

void *_lsearch_s(
   const void *key,
   void *base,
   unsigned int *num,
   size_t size,
   int (__cdecl *compare)(void *, const void *, const void *),
   void * context
);

Parameter

key
Das Objekt, nach dem gesucht werden soll.

base
Zeiger auf der Basis des zu durchsuchenden Arrays.

number
Anzahl der Elemente.

size
Die Größe jedes Array-Elements in Bytes.

compare
Ein Zeiger auf die Vergleichsroutine. Der zweite Parameter ist ein Zeiger auf den Schlüssel für die Suche. Der dritte Parameter ist ein Zeiger auf das Arrayelement, das mit dem Schlüssel verglichen werden soll.

context
Ein Zeiger auf ein Objekt, auf das in der Vergleichsfunktion möglicherweise zugegriffen werden kann.

Rückgabewert

Wenn key gefunden wird, gibt _lsearch_s einen Zeiger auf das Element des Arrays bei base zurück, das key entspricht. Wenn key nicht gefunden wird, _lsearch_s wird ein Zeiger auf das neu hinzugefügte Element am Ende des Arrays zurückgegeben.

Wenn ungültige Parameter an die Funktion übergeben werden, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, wird errno auf EINVAL gesetzt, und die Funktion gibt NULLzurück. Weitere Informationen finden Sie untererrno, _doserrno, _sys_errlistund _sys_nerr.

Fehlerbedingungen

key base compare number size errno
NULL any Beliebig Beliebig Beliebig EINVAL
Beliebig NULL any != 0 any EINVAL
Beliebig Beliebig Beliebig any null EINVAL
any any NULL ein any EINVAL

Hinweise

Die _lsearch_s-Funktion führt eine lineare Suche nach dem Wert key in einem Array aus number-Elementen durch, die jeweils aus size-Bytes bestehen. Im Gegensatz dazu bsearch_s_lsearch_s muss das Array nicht sortiert werden. Wenn key nicht gefunden wird, _lsearch_s wird es am Ende des Arrays und inkrementiert numberhinzugefügt.

Die compare-Funktion ist ein Zeiger auf eine benutzerdefinierte Routine, die zwei Elemente des Arrays vergleicht und einen Wert zurückgibt, der die Beziehung angibt. Die compare-Funktion übernimmt auch den Zeiger auf den Kontext als erstes Argument. _lsearch_s ruft compare einmal oder mehrere Male während der Suche auf, wodurch bei jedem Aufruf Zeiger auf zwei Array-Elemente übergeben werden. compare muss die Elemente vergleichen und entweder ungleich null (d.h. die Elemente unterscheiden sich) oder 0 (d.h. die Elemente sind identisch) zurückgeben.

Der context-Zeiger kann nützlich sein, wenn die durchsuchte Datenstruktur Teil eines Objekts ist und die compare-Funktion auf Member des Objekts zugreifen muss. Beispielsweise kann Code in der compare-Funktion den void-Zeiger in den passenden Objekttyp umwandeln und auf Member des Objekts zugreifen. Das Hinzufügen des context Zeigers macht _lsearch_s sicherer, da zusätzlicher Kontext verwendet werden kann, um Reentranzfehler zu vermeiden, die mit der Verwendung statischer Variablen verbunden sind, um Daten für die compare Funktion verfügbar zu machen.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.

Anforderungen

Routine Erforderlicher Header
_lsearch_s <search.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Siehe auch

Suchen und Sortieren
bsearch_s
_lfind_s
_lsearch