bsearch(3) Library Functions Manual bsearch(3) NOMBRE bsearch - busqueda binaria en un arreglo (array) ordenado BIBLIOTECA Biblioteca Estandar C (libc, -lc) SINOPSIS #include void *bsearch(const void key[.size], const void base[.size * .nmemb], size_t nmemb, size_t size, int (*compar)(const void [.size], const void [.size])); DESCRIPCION La funcion bsearch() busca en un arreglo de nmemb elementos, donde el primer elemento esta apuntado por base, un elemento que coincida con el objecto apuntado por key. El tamano de cada elementos del arreglo es especificado por size. El contenido del arreglo debe estar ordenado en orden ascendente segun la funcion de comparacion referenciada por compar. Se espera que la rutina compar tenga dos argumentos que apunten al objeto key y a un elemento del arreglo, en ese orden, y debe devolver un entero menor, igual o mayor que cero si resulta que el objeto key es menor, igual o mayor (respectivamente) que el elemento del arreglo. VALOR DEVUELTO La funcion bsearch() devuelve un puntero al elemento del arreglo que coincide, o NULL si no hay coincidencia. Si hay multiples elementos que coinciden con la clave, el elemento devuelto esta sin determinar. ATRIBUTOS Para obtener una explicacion de los terminos usados en esta seccion, vease attributes(7). +-----------------------------+--------------------+-------------------+ |Interfaz | Atributo | Valor | +-----------------------------+--------------------+-------------------+ |bsearch() | Seguridad del hilo | Multi-hilo seguro | +-----------------------------+--------------------+-------------------+ ESTANDARES C11, POSIX.1-2008. HISTORIAL POSIX.1-2001, C89, C99, SVr4, 4.3BSD. EJEMPLOS The example below first sorts an array of structures using qsort(3), then retrieves desired elements using bsearch(). #include #include #include #define ARRAY_SIZE(arr) (sizeof((arr)) / sizeof((arr)[0])) struct mi { int nr; const char *name; }; static struct mi months[] = { { 1, "jan" }, { 2, "feb" }, { 3, "mar" }, { 4, "apr" }, { 5, "may" }, { 6, "jun" }, { 7, "jul" }, { 8, "aug" }, { 9, "sep" }, {10, "oct" }, {11, "nov" }, {12, "dec" } }; static int compmi(const void *m1, const void *m2) { const struct mi *mi1 = m1; const struct mi *mi2 = m2; return strcmp(mi1->name, mi2->name); } int main(int argc, char *argv[]) { qsort(months, ARRAY_SIZE(months), sizeof(months[0]), compmi); for (size_t i = 1; i < argc; i++) { struct mi key; struct mi *res; key.name = argv[i]; res = bsearch(&key, months, ARRAY_SIZE(months), sizeof(months[0]), compmi); if (res == NULL) printf("'%s': unknown month\n", argv[i]); else printf("%s: month #%d\n", res->name, res->nr); } exit(EXIT_SUCCESS); } VEASE TAMBIEN hsearch(3), lsearch(3), qsort(3), tsearch(3) TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Sebastian Desimone y Juan Pablo Puerta Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . Paginas de manual de Linux 6.06 31 Octubre 2023 bsearch(3)