The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

bsearch (3)
  • bsearch (3) ( Solaris man: Библиотечные вызовы )
  • bsearch (3) ( FreeBSD man: Библиотечные вызовы )
  • bsearch (3) ( Русские man: Библиотечные вызовы )
  • >> bsearch (3) ( Linux man: Библиотечные вызовы )
  • bsearch (3) ( POSIX man: Библиотечные вызовы )
  •  

    NAME

    bsearch - binary search of a sorted array
     
    

    SYNOPSIS

    #include <stdlib.h>
    
    void *bsearch(const void *key, const void *base,
                  size_t nmemb, size_t size,
                  int (*compar)(const void *, const void *));
    
     

    DESCRIPTION

    The bsearch() function searches an array of nmemb objects, the initial member of which is pointed to by base, for a member that matches the object pointed to by key. The size of each member of the array is specified by size.

    The contents of the array should be in ascending sorted order according to the comparison function referenced by compar. The compar routine is expected to have two arguments which point to the key object and to an array member, in that order, and should return an integer less than, equal to, or greater than zero if the key object is found, respectively, to be less than, to match, or be greater than the array member.  

    RETURN VALUE

    The bsearch() function returns a pointer to a matching member of the array, or NULL if no match is found. If there are multiple elements that match the key, the element returned is unspecified.  

    CONFORMING TO

    SVr4, 4.3BSD, POSIX.1-2001, C89, C99.  

    EXAMPLE

    The example below first sorts an array of structures using qsort(3), then retrieves desired elements using bsearch().

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    struct mi {
        int nr;
        char *name;
    } 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" }
    };
    
    #define nr_of_months (sizeof(months)/sizeof(months[0]))
    
    static int
    compmi(const void *m1, const void *m2)
    {
        struct mi *mi1 = (struct mi *) m1;
        struct mi *mi2 = (struct mi *) m2;
        return strcmp(mi1->name, mi2->name);
    }
    
    int
    main(int argc, char **argv)
    {
        int i;
    
        qsort(months, nr_of_months, sizeof(struct mi), compmi);
        for (i = 1; i < argc; i++) {
            struct mi key, *res;
            key.name = argv[i];
            res = bsearch(&key, months, nr_of_months,
                          sizeof(struct mi), compmi);
            if (res == NULL)
                printf("aq%saq: unknown month\n", argv[i]);
            else
                printf("%s: month #%d\n", res->name, res->nr);
        }
        exit(EXIT_SUCCESS);
    }
    
     

    SEE ALSO

    hsearch(3), lsearch(3), qsort(3), tsearch(3)  

    COLOPHON

    This page is part of release 3.14 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.


     

    Index

    NAME
    SYNOPSIS
    DESCRIPTION
    RETURN VALUE
    CONFORMING TO
    EXAMPLE
    SEE ALSO
    COLOPHON


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру