Freigeben über


_lfind

Führt eine lineare Suche für den angegebenen Schlüssel aus. Eine sicherere Version dieser Funktion ist verfügbar; finden Sie unter _lfind_s.

void *_lfind(
   const void *key,
   const 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 von Suchendaten.

  • num
    Zahl Arrayelemente.

  • width
    Breite von Arrayelementen.

  • compare
    Zeiger auf die Vergleichsroutine. Der erste Parameter ist ein für Such- zu verschlüsseln, Zeiger. Der zweite Parameter ist ein Zeiger mit Schlüssel verglichen werden Arrayelement.

Rückgabewert

Wenn die Schlüssel gefunden wird, gibt _lfind einen Zeiger auf das Element des Arrays bei diesem base Entspricht key zurück. Wenn der Schlüssel nicht gefunden wird, gibt _lfindNULL zurück.

Hinweise

Die _lfind-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 _lfind das Array nicht sortiert werden. Das base-Argument ist ein Zeiger zur Basis des zu durchsuchenden Arrays. Das compare-Argument ist ein Zeiger auf eine vom Benutzer bereitgestellten Routine, die zwei Arrayelemente und vergleicht dann einen Wert zurückgibt, der die Beziehung angibt. _lfind ruft die Routine compare mindestens einmal während der Suche auf und übergibt Zeiger zu zwei Arrayelementen auf jedem Aufruf. Die Routine compare muss die Elemente und dann den Rückholwert ungleich 0 (null) (die Elemente sind signifikant Sie unterscheiden) oder das 0 (vergleichen 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

_lfind

<search.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Beispiel

// crt_lfind.c
// This program uses _lfind to search a string array
// for an occurrence of "hello".

#include <search.h>
#include <string.h>
#include <stdio.h>

int compare(const void *arg1, const void *arg2 )
{
   return( _stricmp( * (char**)arg1, * (char**)arg2 ) );
}

int main( )
{
   char *arr[] = {"Hi", "Hello", "Bye"};
   int n = sizeof(arr) / sizeof(char*);
   char **result;
   char *key = "hello";

   result = (char **)_lfind( &key, arr, 
                      &n, sizeof(char *), compare );

   if( result )
      printf( "%s found\n", *result );
   else
      printf( "hello not found!\n" );
}
  

.NET Framework-Entsprechung

System::Collections::ArrayList::Contains

Siehe auch

Referenz

Suchen und Sortieren

_lfind_s

bsearch

_lsearch

qsort