Se recomienda usar Visual Studio 2017

_lsearch

 

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; agrega al final de la lista si no se encuentra. Una versión más segura de esta función está disponible; consulte _lsearch_s.

void *_lsearch(  
   const void *key,  
   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 la matriz que se buscará.

num
Número de elementos.

width
Ancho de cada elemento de 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 a un elemento de matriz que va a comparar con la clave.

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

El _lsearch 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, _lsearch no requiere que la matriz esté ordenada. Si key no se encuentra, _lsearch agrega al final de la matriz y los incrementos num.

El compare argumento 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. _lsearchllamadas del compare rutinas una o varias veces durante la búsqueda, pasando punteros a dos elementos de la matriz en cada llamada. comparedebe comparar los elementos y devolver uno 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
_lsearch<search.h></search.h>

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

// crt_lsearch.c  
#include <search.h>  
#include <string.h>  
#include <stdio.h>  
  
int compare( const void *arg1, const void *arg2 );  
  
int main(void)  
{  
   char * wordlist[4] = { "hello", "thanks", "bye" };  
                            // leave room to grow...  
   int n = 3;  
   char **result;  
   char *key = "extra";  
   int i;  
  
   printf( "wordlist before _lsearch:" );  
   for( i=0; i<n; ++i ) printf( " %s", wordlist[i] );  
   printf( "\n" );  
  
   result = (char **)_lsearch( &key, wordlist,   
                      &n, sizeof(char *), compare );  
  
   printf( "wordlist after _lsearch:" );  
   for( i=0; i<n; ++i ) printf( " %s", wordlist[i] );  
   printf( "\n" );  
}  
  
int compare(const void *arg1, const void *arg2 )  
{  
   return( _stricmp( * (char**)arg1, * (char**)arg2 ) );  
}  

wordlist before _lsearch: hello thanks bye  
wordlist after _lsearch: hello thanks bye extra  

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
_lfind
_lsearch_s

Mostrar: