Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.