_lsearch_s
esegue una ricerca lineare di un valore.una versione di _lsearch con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.
void *_lsearch_s(
const void *key,
void *base,
unsigned int *num,
size_t size,
int (__cdecl *compare)(void *, const void *, const void *),
void * context
);
Parametri
key
oggetto da cercare.base
Puntatore alla base di matrice da cercare.num
Numero di elementi.size
Dimensione di ciascun elemento della matrice di byte.compare
Puntatore alla routine di confronto.Il secondo parametro è un puntatore alla chiave per la ricerca.Il terzo parametro è un puntatore a un elemento di matrice da confrontare con la chiave.context
Un puntatore a un oggetto che sia accessibile nella funzione di confronto.
Valore restituito
se key viene trovato, _lsearch_srestituisce un puntatore all'elemento della matrice su base tale corrispondenze key.se key non viene trovato, _lsearch_srestituisce un puntatore all'elemento appena aggiunto alla fine della matrice.
Se i parametri non validi vengono passati alla funzione, il gestore non valido di parametro viene richiamato, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, quindi errnoè impostato su EINVAL e restituisce un valore di funzione NULL.Per ulteriori informazioni, vedere errno, _doserrno, _sys_errlist e _sys_nerr.
condizioni di errore
key |
base |
compare |
num |
size |
errno |
---|---|---|---|---|---|
NULL |
qualsiasi |
qualsiasi |
qualsiasi |
qualsiasi |
EINVAL |
qualsiasi |
NULL |
qualsiasi |
!= 0 |
qualsiasi |
EINVAL |
qualsiasi |
qualsiasi |
qualsiasi |
qualsiasi |
zero |
EINVAL |
qualsiasi |
qualsiasi |
NULL |
an |
qualsiasi |
EINVAL |
Note
_lsearch_s la funzione esegue una ricerca lineare del valore key in una matrice di num elementi, ognuno di width byte.A differenza di bsearch_s, _lsearch_s non richiede la matrice di essere ordinato.se key non viene trovato, quindi _lsearch_s lo aggiunge alla fine della matrice e degli incrementi num.
compare la funzione è un puntatore a una routine fornita dall'utente che confronta due elementi di matrice e restituisce un valore che specifica la relazione.compare la funzione accetta il puntatore al contesto come primo argomento._lsearch_s chiamate compare uno o più volte durante la ricerca, passando i puntatori a due elementi della matrice a ogni chiamata.compare deve confrontare gli elementi e restituisca diverso da zero (indicare gli elementi essere diverso) o 0 (indicare gli elementi sono identici).
context il puntatore può essere utile se la struttura di dati trovata fa parte di un oggetto e compare necessità di funzione di accesso ai membri dell'oggetto.Ad esempio, codice in compare la funzione possibile eseguire il cast del puntatore a void nel tipo di oggetto appropriato e i membri di accesso dell'oggetto.L'aggiunta di context il puntatore fa _lsearch_s più sicuri che il contesto aggiuntivo può essere utilizzato per evitare dei bug con una reentrancy associati all'utilizzo delle variabili statiche per rendere i dati di compare funzione.
Requisiti
routine |
Intestazione di associazione |
---|---|
_lsearch_s |
<search.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
Equivalente .NET Framework
Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di platform invoke.