_lsearch
esegue una ricerca lineare di un valore; aggiunto alla fine di se non trovato.Una versione più sicura di questa funzione è disponibile; vedere _lsearch_s.
void *_lsearch(
const void *key,
void *base,
unsigned int *num,
unsigned int width,
int (__cdecl *compare)(const void *, const void *)
);
Parametri
key
oggetto da cercare.base
Puntatore alla base di matrice da cercare.num
Numero di elementi.width
Larghezza di ogni elemento della matrice.compare
Puntatore alla routine di confronto.Il primo parametro è un puntatore alla chiave per la ricerca.Il secondo parametro è un puntatore a un elemento di matrice da confrontare con la chiave.
Valore restituito
Se viene individuata la chiave, _lsearch restituisce un puntatore all'elemento della matrice su base tale corrispondenze key.Se la chiave non viene trovata, _lsearch restituisce un puntatore all'elemento appena aggiunto alla fine della matrice.
Note
_lsearch la funzione esegue una ricerca lineare del valore key in una matrice di num elementi, ognuno di width byte.A differenza di bsearch, _lsearch non richiede la matrice di essere ordinato.se key non viene trovato, _lsearch lo aggiunge alla fine della matrice e degli incrementi num.
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._lsearch chiama compare routine uno o più volte durante la ricerca, passando i puntatori a due elementi della matrice a ogni chiamata.compare deve confrontare gli elementi e restituire 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 |
---|---|
_lsearch |
<search.h> |
Per ulteriori informazioni sulla compatibilità, vedere compatibilità nell'introduzione.
Esempio
// crt_lsearch.c
#include <search.h>
#include <string.h>
#include <stdio.h>
int compare( const void *arg1, const void *arg2 );
int main(void)
{
char * wordlist[4] = { "hello", "thanks", "bye" };
// leave room to grow...
int n = 3;
char **result;
char *key = "extra";
int i;
printf( "wordlist before _lsearch:" );
for( i=0; i<n; ++i ) printf( " %s", wordlist[i] );
printf( "\n" );
result = (char **)_lsearch( &key, wordlist,
&n, sizeof(char *), compare );
printf( "wordlist after _lsearch:" );
for( i=0; i<n; ++i ) printf( " %s", wordlist[i] );
printf( "\n" );
}
int compare(const void *arg1, const void *arg2 )
{
return( _stricmp( * (char**)arg1, * (char**)arg2 ) );
}
Equivalente .NET Framework
Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.