bsearch(3) Library Functions Manual bsearch(3) NUME bsearch - cautare binara a unei matrice sortate BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include void *bsearch(const void key[.size], const void base[.size * .nmemb], size_t nmemb, size_t size, int (*compar)(const void [.size], const void [.size])); DESCRIERE Funcia bsearch() cauta intr-o matrice de obiecte nmemb, al carei membru iniial este indicat de base, un membru care se potrivete cu obiectul indicat de key. Dimensiunea fiecarui membru al matricei este specificata de size. Coninutul matricei ar trebui sa fie in ordine crescatoare in conformitate cu funcia de comparaie la care face referire compar. Se ateapta ca rutina compar sa aiba doua argumente care indica obiectul key i un membru al matricei, in aceasta ordine, i ar trebui sa returneze un numar intreg mai mic, egal sau mai mare decat zero daca obiectul key este gasit, respectiv, mai mic, egal sau mai mare decat membrul matricei. VALOAREA RETURNATA Funcia bsearch() returneaza un indicator catre un membru al matricei care corespunde sau NULL daca nu se gasete nicio potrivire. In cazul in care exista mai multe elemente care corespund cheii (key), elementul returnat este nespecificat. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |bsearch() | Sigurana firelor | MT-Safe | +--------------------------------------+---------------------+---------+ STANDARDE C11, POSIX.1-2008. ISTORIC POSIX.1-2001, C89, C99, SVr4, 4.3BSD. EXEMPLE Exemplul de mai jos sorteaza mai intai o matrice de structuri utilizand qsort(3), apoi extrage elementele dorite utilizand 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, "ian" }, { 2, "feb" }, { 3, "mar" }, { 4, "apr" }, { 5, "mai" }, { 6, "iun" }, { 7, "iul" }, { 8, "aug" }, { 9, "sep" }, {10, "oct" }, {11, "noi" }, {12, "dec" } }; 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': luna necunoscuta\n", argv[i]); else printf("%s: luna nr.%d\n", res->name, res->nr); } exit(EXIT_SUCCESS); } CONSULTAI I hsearch(3), lsearch(3), qsort(3), tsearch(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 bsearch(3)