Provided by: manpages-ro-dev_4.21.0-2_all bug

NUME

       bsearch - căutare binară a unei matrice sortate

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #include <stdlib.h>

       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

       Funcția  bsearch()  caută  într-o  matrice  de obiecte nmemb, al cărei membru inițial este
       indicat de base, un membru care se potrivește cu obiectul  indicat  de  key.   Dimensiunea
       fiecărui membru al matricei este specificată de size.

       Conținutul  matricei  ar trebui să fie în ordine crescătoare în conformitate cu funcția de
       comparație la care face referire compar.  Se  așteaptă  ca  rutina  compar  să  aibă  două
       argumente  care  indică  obiectul  key  și un membru al matricei, în această ordine, și ar
       trebui să returneze un număr întreg mai mic, egal sau mai mare decât  zero  dacă  obiectul
       key este găsit, respectiv, mai mic, egal sau mai mare decât membrul matricei.

VALOAREA RETURNATĂ

       Funcția  bsearch() returnează un indicator către un membru al matricei care corespunde sau
       NULL dacă nu se găsește nicio potrivire.  În cazul în care există mai multe elemente  care
       corespund cheii (key), elementul returnat este nespecificat.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

       ┌───────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │InterfațăAtributValoare │
       ├───────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │bsearch()                                                  │ Siguranța firelor │ MT-Safe │
       └───────────────────────────────────────────────────────────┴───────────────────┴─────────┘

STANDARDE

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

EXEMPLE

       Exemplul  de  mai  jos  sortează mai întâi o matrice de structuri utilizând qsort(3), apoi
       extrage elementele dorite utilizând bsearch().

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

       #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': lună necunoscută\n", argv[i]);
               else
                   printf("%s: luna nr.%d\n", res->name, res->nr);
           }
           exit(EXIT_SUCCESS);
       }

CONSULTAȚI ȘI

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

TRADUCERE

       Traducerea în limba  română  a  acestui  manual  a  fost  creată  de  Remus-Gabriel  Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența  publică  generală  GNU
       Versiunea 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  sau  o  versiune  ulterioară  cu
       privire la condiții privind drepturile de autor.  NU se asumă Nicio RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui  manual,  vă  rugăm să trimiteți un e-mail la
       ⟨translation-team-ro@lists.sourceforge.net⟩.