Partilhar via


_lsearch_s

Executa uma pesquisa linear para um valor. Uma versão de _lsearch com aprimoramentos de segurança, conforme descrito em Recursos de segurança no CRT.

Sintaxe

void *_lsearch_s(
   const void *key,
   void *base,
   unsigned int *num,
   size_t size,
   int (__cdecl *compare)(void *, const void *, const void *),
   void * context
);

Parâmetros

key
O objeto a ser pesquisado.

base
Ponteiro para a base da matriz a ser pesquisada.

number
Número de elementos.

size
Tamanho de cada elemento da matriz em bytes.

compare
Ponteiro para a rotina de comparação. O segundo parâmetro é um ponteiro para a chave de pesquisa. O terceiro parâmetro é um ponteiro para um elemento de matriz a ser comparado com a chave.

context
Um ponteiro para um objeto que pode ser acessado na função de comparação.

Valor retornado

Se key for encontrado, _lsearch_s retornará um ponteiro para o elemento da matriz em base que corresponde a key. Se key não for encontrado, _lsearch_s retornará um ponteiro para o item recém-adicionado no final da matriz.

Se parâmetros inválidos forem passados para a função, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, errno será definido como EINVAL e a função retornará NULL. Para obter mais informações, consulte errno, _doserrno, _sys_errlist e _sys_nerr.

Condições de erro

key base compare number size errno
NULL any qualquer qualquer qualquer EINVAL
qualquer NULL any != 0 any EINVAL
qualquer qualquer qualquer any zero EINVAL
any any NULL an any EINVAL

Comentários

A função _lsearch_s executa uma pesquisa linear para o valor key em uma matriz de number elementos, cada uma de size bytes. Ao contrário bsearch_sdo , _lsearch_s não requer que a matriz seja classificada. Se key não for encontrado, _lsearch_s adicione-o ao final da matriz e incremente number.

A função compare é um ponteiro para uma rotina fornecida pelo usuário que compara dois elementos de matriz e retorna um valor que especifica seu relacionamento. A função compare também usa o ponteiro para o contexto como o primeiro argumento. _lsearch_s chama compare uma ou mais vezes durante a pesquisa, passando ponteiros para dois elementos de matriz em cada chamada. compare deve comparar os elementos e retornar um valor diferente de zero (ou seja, os elementos são diferentes) ou 0 (isto é, os elementos são idênticos).

O ponteiro context poderá ser útil se a estrutura de dados pesquisada for parte de um objeto e a função compare precisar acessar membros do objeto. Por exemplo, o código na função compare pode converter o ponteiro void para o tipo de objeto apropriado e acessar membros de tal objeto. A adição do ponteiro torna _lsearch_s mais seguro porque o context contexto extra pode ser usado para evitar bugs de reentrância associados ao uso de variáveis estáticas para disponibilizar dados para a compare função.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

Requisitos

Rotina Cabeçalho necessário
_lsearch_s <search.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Confira também

Pesquisando e classificando
bsearch_s
_lfind_s
_lsearch