_lsearch_s
Führt eine lineare Suche für einen Wert aus. Eine Version von _lsearch mit werden, wie in Sicherheitsfunktionen in der CRT beschrieben.
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
Planen Sie für Suche für ein.base
Zeiger zur Basis des zu durchsuchenden Arrays.num
Anzahl der Elemente.size
Größe jedes Arrayelements in Bytes.compare
Zeiger auf die Vergleichsroutine. Der zweite Parameter ist ein Zeiger auf die Schlüssel für die Suche. Der dritte Parameter ist ein Zeiger auf ein mit der Schlüssel verglichen werden Arrayelement.context
Ein Zeiger auf ein Objekt, auf das möglicherweise in der Vergleichsfunktion zugegriffen wird.
Rückgabewert
Wenn key gefunden wird, gibt _lsearch_s einen Zeiger auf das Element des Arrays bei diesem base Entspricht key zurück. Wenn key nicht gefunden wird, gibt _lsearch_s einen Zeiger auf das neu hinzugefügten Element am Ende des Arrays zurück.
Wenn ungültige Parameter an die Funktion übergeben werden, wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben. Wenn die Ausführung zulässig ist, um fortzufahren, wird errno auf EINVAL festgelegt und die Funktion gibt NULL zurück. Weitere Informationen finden Sie unter errno, _doserrno, _sys_errlist und _sys_nerr.
Fehlerbedingungen
key |
base |
compare |
num |
size |
errno |
---|---|---|---|---|---|
NULL |
any |
any |
any |
any |
EINVAL |
any |
NULL |
any |
!= 0 |
any |
EINVAL |
any |
any |
any |
any |
0 (Null) |
EINVAL |
any |
any |
NULL |
an |
any |
EINVAL |
Hinweise
Die _lsearch_s-Funktion führt eine lineare Suche für den Wert key in einem num - Array Elemente, jedes von width Bytes aus. Anders als bsearch_s erfordert _lsearch_s das Array nicht sortiert werden. Wenn key nicht gefunden wird, wird _lsearch_s dem Ende des Arrays hinzu und inkrementiert num.
Die Funktion compare ist ein Zeiger auf eine vom Benutzer bereitgestellten Routine, die zwei Arrayelemente verglichen und einen Wert zurückgibt, der die Beziehung angibt. Die Funktion compare verfügt auch den Zeiger Kontext als das erste Argument. _lsearch_s ruft compare mindestens einmal während der Suche auf und übergibt Zeiger zu zwei Arrayelementen auf jedem Aufruf. compare muss über Elemente vergleichen und entweder dem Wert ungleich 0 (null) (die Elemente sind signifikant Sie unterscheiden) oder 0 zurückgeben (anschließend die Elemente signifikant, befinden) identisch.
Der context Zeiger kann nützlich sein, wenn die gesuchte Datenstruktur Teil eines Objekts ist und die compare-Funktion Member des Objekts zugreifen muss. Beispielsweise kann Code in der compare-Funktion den void-Zeiger in die entsprechenden Objekttypen aufgelistet umwandeln und Member dieses Objekts zugreifen. Die hinzugefügten context des Zeigers macht _lsearch_s sicherer, da zusätzliche Kontext verwendet werden kann, um die Reentranzfehler zu vermeiden, die mithilfe von statischen Variablen, um Daten zur Verfügung stehen die compare-Funktion zugeordnet sind.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
_lsearch_s |
<search.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.
.NET Framework-Entsprechung
Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.