_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