_lsearch_s
Führt eine lineare Suche nach einem Wert aus.Eine Version von _lsearch mit unter Security Enhancements, wie in Sicherheitsfeatures im CRTbeschrieben.
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 die Basis des zu durchsuchenden Array.num
Anzahl von Elementen.size
Größe der einzelnen Arrayelements in Bytes.compare
Zeiger auf die routine Vergleichs.Der zweite Parameter ist ein Zeiger auf die Schlüssel für die Suche.Der dritte Parameter ist ein Zeiger auf ein mit dem Schlüssel zu vergleichende Arrayelement.context
Ein Zeiger auf ein Objekt, das möglicherweise in der Vergleichsfunktion zugegriffen wird.
Rückgabewert
Wenn key gefunden wird, gibt _lsearch_seinen Zeiger auf das Element des Arrays bei diesem base Übereinstimmungen keyzurück.Wenn key nicht gefunden wird, gibt _lsearch_seinen Zeiger auf den neu hinzugefügten Elements am Ende des Arrays zurück.
Wenn ungültige Parameter an die Funktion übergeben werden, wird der Ereignishandler aufgerufen, z. B. ungültige Parameter in Parametervalidierungbeschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, wird errnozu EINVAL festgelegt, und die Funktion gibt NULLzurück.Weitere Informationen finden Sie unter errno, _doserrno, _sys_errlist und _sys_nerr.
Fehlerbedingungen
key |
base |
compare |
num |
size |
errno |
---|---|---|---|---|---|
NULL |
alle |
alle |
alle |
alle |
EINVAL |
alle |
NULL |
alle |
!= 0 |
alle |
EINVAL |
alle |
alle |
alle |
alle |
0 (Null) |
EINVAL |
alle |
alle |
NULL |
ein |
alle |
EINVAL |
Hinweise
Die _lsearch_s-Funktion führt eine lineare Suche nach dem Wert key in einem Array num einzelnen Elemente width von Bytes aus.Im Gegensatz zu bsearch_serfordert _lsearch_s das Array nicht sortiert werden soll.Wenn key nicht gefunden wird, wird _lsearch_s es dem Ende des Arrays hinzugefügt und erhöht num.
Die compare-Funktion ist ein Zeiger auf eine benutzerdefinierte Routine, die zwei Arrayelemente vergleicht und einen Wert zurückgibt, der die ihre Beziehung angibt.Die compare-Funktion nimmt auch den Mauszeiger auf den Kontext als Erstes Argument._lsearch_s Aufrufe compare einmal oder mehrmals während der Suche Zeiger auf zwei Arrayelementen bei jedem Aufruf.compare muss die Elemente vergleichen und dem Wert ungleich 0 (das heißt die Elemente) unterschiedlich sind, oder 0 zurück (das heißt die Elemente anschließend sind identisch).
Der context Zeiger kann nützlich sein, wenn die gesuchte Datenstruktur Teil eines Objekts ist und die Member des Objekts compare-Funktion verweisen muss.Beispielsweise kann der Code in der compare-Funktion den void-Zeiger in den entsprechenden Objekttyp umwandeln und Member dieses Objekts zu.Durch Hinzufügen des context Zeigers macht _lsearch_s sicherer, da zusätzlicher Kontext verwendet werden kann, um die Reentranz zu vermeiden, die mit der Verwendung von statischen Variablen, um Daten zur Verfügung zu stellen die compare-Funktion zugeordnet sind.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
_lsearch_s |
<search.h> |
Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.
.NET Framework-Entsprechung
Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.