_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 NULL
zurück. Weitere Informationen finden Sie untererrno
, _doserrno
, _sys_errlist
und _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 number
hinzugefü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.