_lfind
Wykonuje liniowej wyszukiwania dla określonego klucza.Bardziej bezpieczna wersja ta funkcja jest dostępna; 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
Obiekt do wyszukiwania.base
Wskaźnik do bazy danych wyszukiwania.num
Liczba elementów tablicy.width
Szerokość elementów tablicy.compare
Wskaźnik do rutynowych porównania.Pierwszy parametr jest wskaźnik do klucza w celu wyszukiwania.Drugi parametr jest wskaźnik do elementu tablicy, który należy porównać z kluczem.
Wartość zwracana
Jeśli klucz zostanie znaleziony, _lfind zwraca wskaźnik do elementu tablicy w base , które odpowiadają key.Jeśli klawisz nie zostanie znaleziony, _lfind zwraca NULL.
Uwagi
_lfind Funkcja wykonuje liniowej wyszukiwania dla wartości key w tablicy num elementów, każdy z width bajtów.W odróżnieniu od bsearch, _lfind nie wymaga tablicy, które mają być sortowane.base Argument jest wskaźnik do podstawy tablicy, które mają być przeszukiwane.compare Argument jest wskaźnik do rutynowych dostarczone przez użytkownika, który porównuje dwa elementy tablicy, a następnie zwraca wartość, określając ich relacji._lfindwywołania compare rutynowych jeden lub więcej razy podczas wyszukiwania, przekazując wskaźniki do dwóch elementów tablicy dla każdego wywołania.compare Rutynowych musi porównać elementy i zwracany jest różna od zera (to znaczy elementy są różne) lub 0 (to znaczy elementy są identyczne).
Funkcja ta sprawdza poprawność jego parametry.Jeśli compare, key lub num jest NULL, lub jeśli base ma wartość NULL i *num jest różna od zera, lub jeśli width jest mniejsza niż zero, nieprawidłowy parametr wywoływana jest funkcja obsługi, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie jest dozwolone, aby kontynuować, errno jest ustawiona na EINVAL i funkcja zwraca NULL.
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
_lfind |
<search.h> |
Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.
Przykład
// 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" );
}
Odpowiednik w programie .NET Framework
System::Collections::ArrayList:: zawiera