_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_s
do , _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.