Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Realiza una búsqueda lineal de la clave especificada. Hay disponible una versión más segura de esta función; consulte _lfind_s.
Sintaxis
void *_lfind(
const void *key,
const void *base,
unsigned int *num,
unsigned int width,
int (__cdecl *compare)(const void *, const void *)
);
Parámetros
key
Objeto que se va a buscar.
base
Puntero a la base de los datos de búsqueda.
number
Número de elementos de la matriz.
width
Ancho de los elementos de la matriz.
compare
Puntero a la rutina de comparación. El primer parámetro es un puntero a la clave de búsqueda. El segundo parámetro es un puntero al elemento de la matriz que se va a comparar con la clave.
Valor devuelto
Si se encuentra la clave, _lfind devuelve un puntero al elemento de la matriz en base que coincide con key. Si no se encuentra la clave, _lfind devuelve NULL.
Comentarios
La función _lfind realiza una búsqueda lineal del valor key en una matriz de number elementos, cada uno de ellos de width bytes. A diferencia bsearchde , _lfind no requiere que la matriz se ordene. El argumento base es un puntero a la base de la matriz que se va a buscar. El argumento compare es un puntero a una rutina proporcionada por el usuario que compara dos elementos de la matriz y luego devuelve un valor que especifica su relación. _lfind llama a la rutina compare una o varias veces durante la búsqueda, pasando punteros a dos elementos de la matriz en cada llamada. La rutina compare debe comparar los elementos y luego devolver un valor distinto de cero (es decir, los elementos son diferentes) o 0 (es decir, los elementos son idénticos).
Esta función valida sus parámetros. Si compare, o number es NULL, key o si base es y es NULL distinto de ceronumber, o si width es menor que cero, se invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, errno está establecido en EINVAL y la función devuelve NULL.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Requisitos
| Routine | Encabezado necesario |
|---|---|
_lfind |
<search.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// crt_lfind.c
// This program uses _lfind to search a string array
// for an occurrence of "hello".
#include <search.h>
#include <string.h>
#include <stdio.h>
int compare(const void *arg1, const void *arg2 )
{
return( _stricmp( * (char**)arg1, * (char**)arg2 ) );
}
int main( )
{
char *arr[] = {"Hi", "Hello", "Bye"};
int n = sizeof(arr) / sizeof(char*);
char **result;
char *key = "hello";
result = (char **)_lfind( &key, arr,
&n, sizeof(char *), compare );
if( result )
printf( "%s found\n", *result );
else
printf( "hello not found!\n" );
}
Hello found