_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.

Siehe auch

Referenz

Suchen und Sortieren

bsearch

_lfind

_lsearch_s