_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.