_lsearch_s

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Realiza una búsqueda lineal de 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 que se va a 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 va a comparar con la clave.

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

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

Si se pasan parámetros no válidos a la función, se invoca el controlador de parámetros no válidos, como se describe en validación del parámetro. Si la ejecución puede continuar, a continuación, errno está establecido en EINVAL y la función devuelve NULL. Para obtener más información, consulte errno, _doserrno, _sys_errlist y _sys_nerr.

Condiciones de error

keybasecomparenumsizeerrno
NULLcualquieracualquieracualquieracualquieraEINVAL
cualquieraNULLcualquiera!= 0cualquieraEINVAL
cualquieracualquieracualquieraanyceroEINVAL
anycualquieraNULLancualquieraEINVAL

El _lsearch_s función realiza una búsqueda lineal para el valor key en una matriz de num elementos, cada uno de los width bytes. A diferencia de bsearch_s, _lsearch_s no requiere que la matriz esté ordenada. Si key no se encuentra, a continuación, _lsearch_s agrega al final de la matriz y los incrementos num.

El compare función es un puntero a una rutina proporcionada por el usuario que compara dos elementos de la matriz y devuelve un valor que indica su relación. El compare función también toma el puntero en el contexto como el primer argumento. _lsearch_sllamadas compare una o varias veces durante la búsqueda, pasando punteros a dos elementos de la matriz en cada llamada. comparedebe comparar los elementos y, a continuación, devolver uno distinto de cero (es decir, los elementos son diferentes) o 0 (es decir, los elementos son idénticos).

El context puntero puede ser útil si la estructura de datos de búsqueda es parte de un objeto y el compare función necesita tener acceso a los miembros del objeto. Por ejemplo, el código de la compare función puede convertir el puntero void en los miembros de tipo y el acceso de objeto correspondiente de ese objeto. La adición de la context puntero hace _lsearch_s más segura porque el contexto adicional puede utilizarse para evitar errores de reentrada asociados al uso de variables estáticas para que los datos disponibles para el compare (función).

RutinaEncabezado necesario
_lsearch_s<search.h></search.h>

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

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.

Buscar y ordenar
bsearch_s
_lfind_s
_lsearch

Mostrar: