_lfind
Provede lineární vyhledávání zadaného klíče.Bezpečnější verze této funkce je k dispozici; see _lfind_s.
void *_lfind(
const void *key,
const void *base,
unsigned int *num,
unsigned int width,
int (__cdecl *compare)(const void *, const void *)
);
Parametry
key
Objekt hledání.base
Ukazatel na základní data pro hledání.num
Počet prvků pole.width
Šířka prvky pole.compare
Ukazatele myši rutině porovnání.První parametr je ukazatel na klíč pro hledání.Druhý parametr je ukazatel na prvek pole, které chcete srovnávat s klíčem.
Vrácená hodnota
Pokud je nalezen klíč, _lfind vrací ukazatel na prvek pole na base , odpovídá key.Pokud není nalezen klíč, _lfind vrátí NULL.
Poznámky
_lfind Funkce provádí lineární hledat hodnotu key v poli num prvky, každý z width bajtů.Na rozdíl od bsearch, _lfind nevyžaduje pole seřazena.base Argument je ukazatel na základní pole mají být prohledány.compare Je argument ukazatele myši rutině zadaných uživatelem, který porovnává dva prvky matice a vrátí hodnotu určující jejich vztah._lfindvolání compare rutinní jednou nebo vícekrát během hledání, předáním ukazatele dva prvky pole každého volání.compare Rutina musí porovnat prvky a vrátit nenulová (to znamená jsou různé prvky) nebo 0 (tj. prvky jsou identické).
Tato funkce ověřuje jeho parametry.Pokud compare, key nebo num je NULL, nebo pokud base hodnotu NULL a *num je nenulová, nebo pokud width je menší než nula, je vyvolána neplatný parametr popisovače, jak je popsáno v Ověření parametrů.Pokud je povoleno spuštění pokračovat, errno je nastavena na EINVAL a vrátí funkce NULL.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
_lfind |
<search.h> |
Další informace o kompatibilitě v tématu Compatibility v úvodu.
Příklad
// 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" );
}
Ekvivalent v rozhraní .NET Framework
System::Collections::ArrayList:: obsahuje