_lfind

 

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 la clave especificada. Una versión más segura de esta función está disponible; consulte _lfind_s.

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 datos de búsqueda.

num
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 va a comparar con la clave.

Si se encuentra la clave, _lfind devuelve un puntero al elemento de la matriz en base que coincida con key. Si no se encuentra la clave, _lfind devuelve NULL.

El _lfind 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, _lfind no requiere que la matriz esté ordenada. El base argumento es un puntero a la base de la matriz que se va a buscar. El compare argumento es un puntero a una rutina proporcionada por el usuario que compara dos elementos de la matriz y, a continuación, devuelve un valor que indica su relación. _lfindllamadas del compare rutinas una o varias veces durante la búsqueda, pasando punteros a dos elementos de la matriz en cada llamada. El compare rutina debe comparar los elementos y, a continuación, devolver 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, key o num es NULL, o si base es NULL y *num es distinto de cero, o si width es menor que cero, 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, errno se establece en EINVAL y la función devuelve NULL.

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

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

// 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  

System::Collections::ArrayList:: contiene

Buscar y ordenar
_lfind_s
bsearch
_lsearch
qsort

Mostrar: