Provided by: manpages-pl-dev_4.13-4_all 

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).
┌───────────┬────────────────────────┬─────────┐
│ Interfejs │ Atrybut │ Wartość │
├───────────┼────────────────────────┼─────────┤
│ bsearch() │ Bezpieczeństwo wątkowe │ MT-Safe │
└───────────┴────────────────────────┴─────────┘
ZGODNE Z
POSIX.1-2001, POSIX.1-2008, C89, C99, SVr4, 4.3BSD.
PRZYKŁADY
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)
{
const struct mi *mi1 = m1;
const struct mi *mi2 = m2;
return strcmp(mi1->name, mi2->name);
}
int
main(int argc, char **argv)
{
qsort(months, nr_of_months, sizeof(months[0]), compmi);
for (int i = 1; i < argc; i++) {
struct mi key;
struct mi *res;
key.name = argv[i];
res = bsearch(&key, months, nr_of_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);
}
ZOBACZ TAKŻE
hsearch(3), lsearch(3), qsort(3), tsearch(3)
O STRONIE
Angielska wersja tej strony pochodzi z wydania 5.10 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 są: Adam Byrtek <alpha@irc.pl>, Andrzej
Krzysztofowicz <ankry@green.mf.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach
<michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ
ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-
list@lists.sourceforge.net.
1 listopada 2020 r. BSEARCH(3)