bsearch(3) Library Functions Manual bsearch(3) NAZWA bsearch - binarnie przeszukuje posortowana tablice BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include void *bsearch(const void key[.size], const void base[.size * .n], size_t n, size_t size, typeof(int (const void [.size], const void [.size])) *compar); OPIS The bsearch() function searches an array of n 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. Zawartosc tablicy powinna byc posortowana w kolejnosci rosnacej zgodnie z funkcja porownawcza wskazywana przez compar. Funkcja compar powinna przyjmowac dwa argumenty: wskaznik do obiektu key oraz do elementu tablicy i powinna zwracac liczbe calkowita mniejsza od zera, rowna zeru lub wieksza niz zero, jesli obiekt key okazal sie, odpowiednio, mniejszy, rowny lub wiekszy niz element tablicy. WARTOSC ZWRACANA Funkcja bsearch() zwraca wskaznik do pasujacego elementu tablicy lub NULL, jesli nie znaleziono takiego elementu. Jesli istnieje wiecej takich elementow, to nie jest okreslone, na ktory element bedzie wskazywac zwrocony wskaznik. ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +---------------------------+--------------------------+---------------+ |Interfejs | Atrybut | Wartosc | +---------------------------+--------------------------+---------------+ |bsearch() | Bezpieczenstwo watkowe | MT-bezpieczne | +---------------------------+--------------------------+---------------+ STANDARDY C11, POSIX.1-2008. HISTORIA POSIX.1-2001, C89, C99, SVr4, 4.3BSD. PRZYKLADY Ponizszy przyklad najpierw sortuje tablice struktur, uzywajac qsort(3), a nastepnie pobiera zadane elementy, uzywajac 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, "sty" }, { 2, "lut" }, { 3, "mar" }, { 4, "kwi" }, { 5, "maj" }, { 6, "cze" }, { 7, "lip" }, { 8, "sie" }, { 9, "wrz" }, {10, "lis" }, {11, "paz" }, {12, "gru" } }; 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': nieznany miesiac\n", argv[i]); else printf("%s: miesiac #%d\n", res->name, res->nr); } exit(EXIT_SUCCESS); } ZOBACZ TAKZE hsearch(3), lsearch(3), qsort(3), tsearch(3) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Adam Byrtek , Andrzej Krzysztofowicz , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.12 13 grudnia 2024 r. bsearch(3)