Sdílet prostřednictvím


_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

Viz také

Referenční dokumentace

Vyhledávání a třídění

_lfind_s

bsearch

_lsearch

qsort