Compartilhar via


_lfind

Realiza uma pesquisa linear da chave especificada.Uma versão mais segura desta função está disponível. see _lfind_s.

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

Parâmetros

  • key
    Para procurar o objeto.

  • base
    Ponteiro para a base de dados de pesquisa.

  • 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 para pesquisa.O segundo parâmetro é um ponteiro para o elemento de matriz a ser comparado com a chave.

Valor de retorno

Se a chave for encontrada, _lfind retorna um ponteiro para o elemento da matriz em base que corresponde a key.Se a chave não for encontrada, _lfind retorna NULL.

Comentários

O _lfind função realiza uma pesquisa linear para o valor key em uma matriz de num elementos, cada um dos width bytes.Ao contrário do bsearch, _lfind não requer a matriz a ser classificado.O base argumento é um ponteiro para a base da matriz a ser pesquisada.O compare argumento é um ponteiro para uma rotina fornecido pelo usuário que compara dois elementos de matriz e retorna um valor especificando seu relacionamento._lfindchamadas de compare rotina um ou mais vezes durante a pesquisa, passando os ponteiros para dois elementos de matriz em cada chamada.O 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 seus parâmetros.Se compare, key ou num é NULL, ou se base é NULL e *num é diferente de zero, ou se width é menor que zero, o manipulador de parâmetro inválido é invocado, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, errno for definido como EINVAL e a função retornará NULL.

Requisitos

Rotina

Cabeçalho necessário

_lfind

<search.h>

Para obter mais informações de compatibilidade, consulte compatibilidade na introdução.

Exemplo

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

Equivalência do .NET Framework

System::Collections::ArrayList:: contém

Consulte também

Referência

Pesquisa e classificação

_lfind_s

bSearch

_lsearch

qsort