Condividi tramite


_lfind

Esegue una ricerca lineare della chiave specificata.Una versione più sicura di questa funzione è disponibile; vedere _lfind_s.

void *_lfind(
   const void *key,
   const void *base,
   unsigned int *num,
   unsigned int width,
   int (__cdecl *compare)(const void *, const void *)
);

Parametri

  • key
    oggetto da cercare.

  • base
    Puntatore alla base dei dati trovati.

  • num
    Numero di elementi di matrice.

  • width
    Larghezza degli elementi della matrice.

  • compare
    Puntatore alla routine di confronto.il primo parametro è un puntatore da impostare per la ricerca.Il secondo parametro è un puntatore all'elemento di matrice da confrontare con la chiave.

Valore restituito

Se viene individuata la chiave, _lfind restituisce un puntatore all'elemento della matrice su base tale corrispondenze key.Se la chiave non viene trovata, _lfind restituisce NULL.

Note

_lfind la funzione esegue una ricerca lineare del valore key in una matrice di num elementi, ognuno di width byte.A differenza di bsearch, _lfind non richiede la matrice di essere ordinato.base l'argomento è un puntatore alla base della matrice da cercare.compare l'argomento è un puntatore a una routine fornita dall'utente che confronta due elementi di matrice e restituisce un valore che specifica la relazione._lfind chiama compare routine uno o più volte durante la ricerca, passando i puntatori a due elementi della matrice a ogni chiamata.compare la routine deve confrontare gli elementi e restituisca diverso da zero (indicare gli elementi essere diverso) o 0 (indicare gli elementi sono identici).

Questa funzione convalida dei parametri.se compare, key o num viene NULL, o se base è NULL e *num è diverso da zero, o se width è minore di zero, il gestore non valido di parametro viene richiamato, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, errno è impostato su EINVAL e restituisce un valore di funzione NULL.

Requisiti

routine

Intestazione di associazione

_lfind

<search.h>

Per ulteriori informazioni sulla compatibilità, vedere compatibilità nell'introduzione.

Esempio

// 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" );
}
  

Equivalente .NET Framework

System:: Raccolte:: Oggetto ArrayList:: contiene

Vedere anche

Riferimenti

Ricerca e ordinamento

_lfind_s

bsearch

_lsearch

qsort