Provided by: manpages-pl-dev_0.7-2_all bug

NAZWA

       bsearch - binarne przeszukiwanie posortowanej tablicy

SKŁADNIA

       #include <stdlib.h>

       void *bsearch(const void *key, const void *base,
                     size_t nmemb, size_t size,
                     int (*compar)(const void *, const void *));

OPIS

       Funkcja  bsearch()  przeszukuje  tablicę  obiektów  nmemb,  której  pierwszy  element jest
       wskazywany przez base, w poszukiwaniu elementu pasującego do  obiektu  wskazywanego  przez
       key. Rozmiar każdego z elementów tablicy określony jest przez size.

       Zawartość  tablicy  powinna  być  posortowana  w  kolejności  rosnącej  zgodnie  z funkcją
       porównawczą wskazywaną przez compar. Funkcja  compar  powinna  przyjmować  dwa  argumenty:
       wskaźnik  do  obiektu  key  oraz  do  elementu  tablicy i powinna zwracać liczbę całkowitą
       mniejszą od zera,  równą  zeru  lub  większą  niż  zero,  jeśli  obiekt  key  okazał  się,
       odpowiednio, mniejszy, równy lub większy niż element tablicy.

WARTOŚĆ ZWRACANA

       Funkcja  bsearch()  zwraca  wskaźnik  do  pasującego  elementu tablicy lub NULL, jeśli nie
       znaleziono  takiego  elementu.  Jeśli  istnieje  więcej  takich  elementów,  to  nie  jest
       określone, na który element będzie wskazywać zwrócony wskaźnik.

ATRYBUTY

       Informacje   o   pojęciach   używanych   w  tym  rozdziale  można  znaleźć  w  podręczniku
       attributes(7).

       ┌──────────┬────────────────────────┬─────────┐
       │InterfejsAtrybutWartość │
       ├──────────┼────────────────────────┼─────────┤
       │bsearch() │ Bezpieczeństwo wątkowe │ MT-Safe │
       └──────────┴────────────────────────┴─────────┘

ZGODNE Z

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

PRZYKŁAD

       Poniższe przykład najpierw  sortuje  tablicę  struktur,  używając  qsort(3),  a  następnie
       pobiera żądane elementy, używając bsearch().

       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       struct mi {
           int nr;
           char *name;
       } months[] = {
           { 1, "sty" }, { 2, "lut" }, { 3, "mar" }, { 4, "kwi" },
           { 5, "maj" }, { 6, "cze" }, { 7, "lip" }, { 8, "sie" },
           { 9, "wrz" }, {10, "paź" }, {11, "lis" }, {12, "gru" }
       };

       #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("'%s': nieznany miesiąc\n", argv[i]);
               else
                   printf("%s: miesiąc #%d\n", res->name, res->nr);
           }
           exit(EXIT_SUCCESS);
       }

ZOBACZ TAKŻE

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

O STRONIE

       Angielska  wersja  tej  strony  pochodzi  z  wydania  4.07  projektu Linux man-pages. Opis
       projektu, informacje dotyczące zgłaszania błędów oraz  najnowszą  wersję  oryginału  można
       znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

       Autorami  polskiego  tłumaczenia  niniejszej  strony podręcznika man są: Adam Byrtek (PTM)
       <abyrtek@priv.onet.pl>, Andrzej Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>, Robert Luberda
       <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>.

       Polskie  tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na
       stronie  http://sourceforge.net/projects/manpages-pl/.  Jest   zgodne   z   wersją    4.07
       oryginału.

                                            2015-08-08                                 BSEARCH(3)