_lsearch
Provede lineární hledat hodnotu; Přidá na konec seznamu, pokud není nalezen.Bezpečnější verze této funkce je k dispozici; Viz _lsearch_s.
void *_lsearch(
const void *key,
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í pole mají být prohledány.num
Počet prvků.width
Šířka každého prvku pole.compare
Ukazatele myši rutině porovnání.První parametr je ukazatel na klíč pro hledání.Druhý parametr je ukazatel prvku pole porovnat s klíči.
Vrácená hodnota
Pokud je nalezen klíč, _lsearch vrací ukazatel na prvek pole na base , odpovídá key.Pokud není nalezen klíč, _lsearch vrací ukazatel na položku nově přidaných na konec pole.
Poznámky
_lsearch Funkce provádí lineární hledat hodnotu key v poli num prvky, každý z width bajtů.Na rozdíl od bsearch, _lsearch nevyžaduje pole seřazena.Pokud key nebyl nalezen _lsearch přidá na konec pole a přírůstky num.
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._lsearchvolá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í.comparemusí porovnat prvky a vrátit buď nenulovou (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í parametru.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í |
---|---|
_lsearch |
<search.h> |
Další informace o kompatibilitě v tématu Compatibility v úvodu.
Příklad
// 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 ) );
}
Ekvivalent v rozhraní .NET Framework
Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.