Provided by: manpages-pl-dev_0.6-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.

ZGODNE Z

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

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  3.71  projektu  Linux  man-pages.  Opis
       projektu,  informacje  dotyczące  zgłaszania błędów, oraz najnowszą wersję oryginału można
       znaleźć pod adresem http://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>  i  Robert
       Luberda <robert@debian.org>.

       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ą   3.71
       oryginału.

                                            2003-11-01                                 BSEARCH(3)