_lsearch
Führt eine lineare Suche nach einem Wert aus. fügt dem Ende der Liste hinzu, wenn es nicht gefunden werden.Eine sicherere Version dieser Funktion ist verfügbar. Weitere Informationen finden Sie unter _lsearch_s.
void *_lsearch(
const void *key,
void *base,
unsigned int *num,
unsigned int width,
int (__cdecl *compare)(const void *, const void *)
);
Parameter
key
Das Objekt, nach dem gesucht werden soll.base
Zeiger auf die Basis des zu durchsuchenden Array.num
Anzahl von Elementen.width
Breite eines Arrayelements.compare
Zeiger auf die routine Vergleichs.Der erste Parameter ist ein Zeiger auf die Schlüssel für die Suche.Der zweite Parameter ist ein Zeiger auf ein mit dem Schlüssel zu vergleichende Arrayelement.
Rückgabewert
Wenn der Schlüssel nicht gefunden wird, gibt _lsearch einen Zeiger auf das Element des Arrays bei diesem base Übereinstimmungen keyzurück.Wenn der Schlüssel nicht gefunden wird, gibt _lsearch einen Zeiger auf den neu hinzugefügten Elements am Ende des Arrays zurück.
Hinweise
Die _lsearch-Funktion führt eine lineare Suche nach dem Wert key in einem Array num einzelnen Elemente width von Bytes aus.Im Gegensatz zu bsearcherfordert _lsearch das Array nicht sortiert werden soll.Wenn key nicht gefunden wird, _lsearch fügt es dem Ende des Arrays hinzugefügt und erhöht num.
Das compare-Argument ist ein Zeiger auf eine benutzerdefinierte Routine, die zwei Arrayelemente vergleicht und einen Wert zurückgibt, der die ihre Beziehung angibt._lsearch ruft die Routine compare einmal oder mehrmals während der Suche auf und übergibt 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 sind identisch).
Diese Funktion überprüft seine Parameter.Wenn compare, key oder numNULList oder den Wert NULL aufweist und base *num ungleich 0 ist, oder wenn width kleiner als null ist, wird der Ereignishandler aufgerufen, z. B. ungültige Parameter in Parametervalidierungbeschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, wird errno zu EINVAL festgelegt, und die Funktion gibt NULLzurück.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
_lsearch |
<search.h> |
Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.
Beispiel
// crt_lsearch.c
#include <search.h>
#include <string.h>
#include <stdio.h>
int compare( const void *arg1, const void *arg2 );
int main(void)
{
char * wordlist[4] = { "hello", "thanks", "bye" };
// leave room to grow...
int n = 3;
char **result;
char *key = "extra";
int i;
printf( "wordlist before _lsearch:" );
for( i=0; i<n; ++i ) printf( " %s", wordlist[i] );
printf( "\n" );
result = (char **)_lsearch( &key, wordlist,
&n, sizeof(char *), compare );
printf( "wordlist after _lsearch:" );
for( i=0; i<n; ++i ) printf( " %s", wordlist[i] );
printf( "\n" );
}
int compare(const void *arg1, const void *arg2 )
{
return( _stricmp( * (char**)arg1, * (char**)arg2 ) );
}
.NET Framework-Entsprechung
Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.