Compartir a través de


_lsearch_s

Realiza una búsqueda lineal por un valor. Una versión de _lsearch con mejoras de seguridad como se describe en Características de seguridad de 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
    Objeto para buscar.

  • base
    Puntero a la base de la matriz que se buscará.

  • num
    Número de elementos.

  • size
    Tamaño de cada elemento de matriz de bytes.

  • compare
    Puntero a la rutina de comparación. El segundo parámetro es un puntero a la clave de búsqueda. El tercer parámetro es un puntero a un elemento de matriz que se va a comparar con la clave.

  • context
    Un puntero a un objeto que se puede tener acceso en la función de comparación.

Valor devuelto

Si se encuentra key , _lsearch_s devuelve un puntero al elemento de matriz en base que coincide con key. Si key no se encuentra, _lsearch_s devuelve un puntero al elemento recién agregado al final de la matriz.

Si los parámetros no válidos se pasan a la función, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros. Si la ejecución puede continuar, después errno se establece en EINVAL y la función devuelve NULL. Para obtener más información, vea errno, _doserrno, _sys_errlist y _sys_nerr.

Condiciones de error

key

base

compare

num

size

errno

NULL

any

any

any

any

EINVAL

any

NULL

any

!= 0

any

EINVAL

any

any

any

any

cero

EINVAL

any

any

NULL

an

any

EINVAL

Comentarios

La función de _lsearch_s realiza una búsqueda lineal por valor key en una matriz de elementos de num , cada uno de los bytes de width . A diferencia de bsearch_s, _lsearch_s no requiere una matriz ajustar su tamaño. Si key no se encuentra, después _lsearch_s lo agrega al final de la matriz y aumenta num.

La función de compare es un puntero a una rutina usuario- proporcionada que compara dos elementos de matriz y devuelve un valor que especifica la relación. La función de compare también contiene el puntero el contexto como primer argumento. _lsearch_s llama compare una o más veces durante la búsqueda, pasando punteros a dos elementos de la matriz en cada llamada. compare debe comparar los elementos y después devolver cero (indican los elementos sea diferente) o 0 (indican los elementos sea idéntico).

El puntero de context puede ser útil si la estructura de datos que se busca es parte de un objeto y la función de compare necesita tener acceso a los miembros del objeto. Por ejemplo, el código de la función de compare puede convertir el puntero vacío en el tipo de objeto adecuado y tener acceso a los miembros de ese objeto. La adición del puntero de context crea _lsearch_s más seguro porque el contexto adicional se puede utilizar para evitar los errores de reentrada asociados al uso de variables estáticas que los datos estén disponibles para la función de compare .

Requisitos

Rutina

Encabezado necesario

_lsearch_s

<search.h>

Para obtener más información sobre compatibilidad, vea Compatibilidad en la introducción.

Equivalente en .NET Framework

No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

Vea también

Referencia

Buscar y ordenar

bsearch_s

_lfind_s

_lsearch