_lsearch
Führt eine lineare Suche für einen Wert aus; fügt Ende der Liste hinzu, wenn Sie nicht gefunden werden. Eine sicherere Version dieser Funktion ist verfügbar; 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
Planen Sie für Suche für ein.base
Zeiger zur Basis des zu durchsuchenden Arrays.num
Anzahl der Elemente.width
Breite jedes Arrayelements.compare
Zeiger auf die Vergleichsroutine. Der erste Parameter ist ein Zeiger auf die Schlüssel für die Suche. Der zweite Parameter ist ein Zeiger auf ein mit der Schlüssel verglichen werden Arrayelement.
Rückgabewert
Wenn die Schlüssel gefunden wird, gibt _lsearch einen Zeiger auf das Element des Arrays bei diesem base Entspricht key zurück. Wenn der Schlüssel nicht gefunden wird, gibt _lsearch einen Zeiger auf das neu hinzugefügten Element am Ende des Arrays zurück.
Hinweise
Die _lsearch-Funktion führt eine lineare Suche für den Wert key in einem num - Array Elemente, jedes von width Bytes aus. Anders als bsearch erfordert _lsearch das Array nicht sortiert werden. Wenn key nicht gefunden wird, wird _lsearch dem Ende des Arrays hinzu und inkrementiert num.
Das compare-Argument ist ein Zeiger auf eine vom Benutzer bereitgestellten Routine, die zwei Arrayelemente verglichen und einen Wert zurückgibt, der die Beziehung angibt. _lsearch ruft die Routine 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 (die Elemente signifikant, befinden) identisch.
Diese Funktion überprüft ihre Parameter. Wenn compare, key oder num ist NULL oder base und NULL ist *num ist ungleich 0 (null), oder, wenn width kleiner als null ist, wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, wird errno auf EINVAL gesetzt, und die Funktion gibt NULL zurück.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
_lsearch |
<search.h> |
Weitere Informationen zur Kompatibilität finden Sie unter 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. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.