_lsearch_s
Realiza uma pesquisa linear para um valor.Uma versão do _lsearch com aprimoramentos de segurança, conforme descrito em Recursos de segurança no CRT.
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
Para procurar o objeto.base
Ponteiro para a base de matriz a ser pesquisada.num
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 para pesquisa.O terceiro parâmetro é um ponteiro para um elemento de matriz a ser comparada com a chave.context
Um ponteiro para um objeto que pode ser acessado na função de comparação.
Valor de retorno
Se key for encontrado, _lsearch_s retorna um ponteiro para o elemento da matriz em base que corresponde a key.Se key não for encontrado, _lsearch_s retorna um ponteiro para o item recentemente adicionado no final da matriz.
Se os parâmetros inválidos são passados para a função, 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, em seguida, errno for 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 |
num |
size |
errno |
---|---|---|---|---|---|
NULL |
any |
any |
any |
any |
EINVAL |
any |
NULL |
any |
!= 0 |
any |
EINVAL |
any |
any |
any |
any |
zero |
EINVAL |
any |
any |
NULL |
um |
any |
EINVAL |
Comentários
O _lsearch_s 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_s, _lsearch_s não requer a matriz a ser classificado.Se key não for encontrado, em seguida, _lsearch_s adiciona ao final do array e incrementos num.
O compare função é um ponteiro para uma rotina fornecido pelo usuário que compara dois elementos de matriz e retorna um valor especificando seu relacionamento.O compare função pega também o ponteiro para o contexto como o primeiro argumento._lsearch_schamadas compare uma ou mais vezes durante a pesquisa, passando os ponteiros para dois elementos de matriz em cada chamada.comparedeve comparar os elementos e, em seguida, retornar um diferente de zero (ou seja, os elementos são diferentes) ou 0 (ou seja, os elementos são idênticos).
O context ponteiro pode ser útil se a estrutura de dados pesquisado é parte de um objeto e o compare função precisa para acessar os membros do objeto.Por exemplo, o código no compare função pode converter o ponteiro nulo em membros de tipo e o acesso a objeto apropriado desse objeto.A adição da context faz com que ponteiro _lsearch_s mais segura porque o contexto adicional pode ser usado para evitar bugs de reentrância associados ao uso de variáveis estáticas para disponibilizar dados para o compare função.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
_lsearch_s |
<search.h> |
Para obter mais informações de compatibilidade, consulte Compatibilidade na introdução.
Equivalência do .NET Framework
Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.