Exportar (0) Imprimir
Expandir todo
and
div
eof
not
or
xor
Expandir Minimizar
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

bsearch

Realiza una búsqueda binaria de un matriz ordenada. Una versión más segura de esta función está disponible; vea bsearch_s.

void *bsearch( 
   const void *key,
   const void *base,
   size_t num,
   size_t width,
   int ( __cdecl *compare ) (const void *key, const void *datum) 
);

key

Objeto para buscar.

base

Puntero a la base de datos de búsqueda.

num

Número de elementos.

width

Ancho de elementos.

compare

Función de devolución de llamada que compara dos elementos. El primero es un puntero a la clave de búsqueda y el segundo es un puntero al elemento de matriz que se va a comparar con la clave.

bsearch devuelve un puntero a una aparición de key en la matriz indicada por base. Si key no se encuentra, la función devuelve NULL. Si la matriz no está en orden de forma ascendente o contiene los registros duplicados con claves idénticas, el resultado será imprevisible.

La función de bsearch realiza una búsqueda binaria de un matriz ordenada de elementos de num , cada uno de los bytes de width de tamaño. El valor de base es un puntero a la base de la matriz que se buscará, y key es el valor que se busca. El parámetro de compare es un puntero a una rutina usuario- proporcionada que compara la clave solicitada a un elemento de matriz y devuelve uno de los siguientes valores que especifican la relación:

Valor devuelto por la rutina de compare

Descripción

< 0

La clave es menor que el elemento de matriz.

0

La clave es igual al elemento de matriz.

> 0

La clave es mayor que el elemento de matriz.

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 cero, 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, errno se establece en EINVAL y la función devuelve NULL.

Rutina

Encabezado necesario

bsearch

<stdlib.h y> search.h <>

Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

Este programa ordena una matriz de cadenas con el qsort, y después utiliza el bsearch para buscar la palabra “gato”.

// crt_bsearch.c
#include <search.h>
#include <string.h>
#include <stdio.h>

int compare( char **arg1, char **arg2 )
{
   /* Compare all of both strings: */
   return _strcmpi( *arg1, *arg2 );
}

int main( void )
{
   char *arr[] = {"dog", "pig", "horse", "cat", "human", "rat", "cow", "goat"};
   char **result;
   char *key = "cat";
   int i;

   /* Sort using Quicksort algorithm: */
   qsort( (void *)arr, sizeof(arr)/sizeof(arr[0]), sizeof( char * ), (int (*)(const 
   void*, const void*))compare );

   for( i = 0; i < sizeof(arr)/sizeof(arr[0]); ++i )    /* Output sorted list */
      printf( "%s ", arr[i] );

   /* Find the word "cat" using a binary search algorithm: */
   result = (char **)bsearch( (char *) &key, (char *)arr, sizeof(arr)/sizeof(arr[0]),
                              sizeof( char * ), (int (*)(const void*, const void*))compare );
   if( result )
      printf( "\n%s found at %Fp\n", *result, result );
   else
      printf( "\nCat not found!\n" );
}
rata humana de cerdo de caballos de la cabra de perros de la vaca de gatos
gatos encontrado en 002F0F04

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft