_lfind
Executa uma Pesquisar linear da chave especificada.Uma versão mais segura desta função está disponível; consulte _lfind_s.
void *_lfind(
const void *key,
const void *base,
unsigned int *num,
unsigned int width,
int (__cdecl *compare)(const void *, const void *)
);
key
Objeto para pesquisar.base
Ponteiro para a base de dados de Pesquisar.num
Número de elementos da matriz.width
Largura dos elementos da matriz.compare
Ponteiro para a rotina de comparação.O primeiro parâmetro é um ponteiro para a chave de Pesquisar.O segundo parâmetro é um ponteiro para o elemento de matriz a ser comparado com a tecla.
Se a chave for encontrado, _lfind Retorna um ponteiro para o elemento da matriz em base que corresponde ao key. Se a chave não for encontrado, _lfind Retorna NULL.
The _lfind função realiza uma Pesquisar linear para o valor key em uma matriz de num elementos, cada um dos width bytes. Ao contrário de bsearch, _lfind não requer que o array a ser classificado. The base argumento é um ponteiro para a base da matriz a ser pesquisada. The compare argumento é um ponteiro para uma rotina fornecido pelo usuário que compara dois elementos de matriz e retorna um valor especificando suas relações. _lfind chamadas a compare rotina uma ou mais vezes durante a Pesquisar, passar ponteiros para dois elementos de matriz em cada telefonar. The compare rotina deve comparar os elementos e, em seguida, retornar diferente de zero (ou seja, os elementos são diferentes) ou 0 (ou seja, os elementos são idênticos).
Esta função valida os parâmetros.If compare, key ou num é NULL, ou se base é nulo e *num é diferente de zero, ou se width é menor que zero, o manipulador de parâmetro inválido é invocado, sistema autônomo descrito em Validação de parâmetro. Se a execução for permitida para continuar, errno é definido como EINVAL e a função retorna NULL.
Rotina |
Cabeçalho necessário |
---|---|
_lfind |
<Pesquisar.h> |
Para obter mais informações de compatibilidade, consulte Compatibilidade na introdução.
// 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" );
}
Hello found