Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       strcmp, strncmp - compară două șiruri

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <string.h>

       int strcmp(const char *s1, const char *s2);
       int strncmp(const char s1[.n], const char s2[.n], size_t n);

DESCRIERE

       Funcția  strcmp() compară cele două șiruri s1 și s2. Nu se ia în considerare locația (pentru o comparație
       care ține cont de locație, a se vedea strcoll(3)). Comparația se face folosind caractere fără semn.

       strcmp() returnează un număr întreg care indică rezultatul comparației, după cum urmează:

       •  0, în cazul în care s1 și s2 sunt egale;

       •  o valoare negativă dacă s1 este mai mic decât s2;

       •  o valoare pozitivă dacă s1 este mai mare decât s2.

       Funcția strncmp() este similară, cu excepția faptului că aceasta compară numai primii (cel mult) n octeți
       din s1 și s2.

VALOAREA RETURNATĂ

       Funcțiile strcmp() și strncmp() returnează un număr întreg mai mic, egal sau mai mare decât zero dacă  se
       constată  că  s1  (sau  primii  n octeți ai acestuia) este mai mic decât, se potrivește sau este mai mare
       decât s2.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌─────────────────────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │ InterfațăAtributValoare │
       ├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │ strcmp(), strncmp()                                                     │ Siguranța firelor │ MT-Safe │
       └─────────────────────────────────────────────────────────────────────────┴───────────────────┴─────────┘

VERSIUNI

       POSIX.1 specifică doar că:

              Semnul unei valori de returnare diferită de zero  este  determinat  de  semnul  diferenței  dintre
              valorile  primei perechi de octeți (ambele interpretate ca fiind de tip unsigned char) care diferă
              în șirurile comparate.

       În glibc, ca și în majoritatea celorlalte implementări, valoarea de returnare este  rezultatul  aritmetic
       al  scăderii ultimului octet comparat din s2 din ultimul octet comparat din s1; (dacă cele două caractere
       sunt egale, această diferență este 0).

STANDARDE

       C11, POSIX.1-2008.

ISTORIC

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

EXEMPLE

       Programul de mai jos poate fi utilizat pentru a demonstra funcționarea lui strcmp() (atunci când i se dau
       două argumente) și strncmp() (atunci când i se dau  trei  argumente).  Mai  întâi,  câteva  exemple  care
       utilizează strcmp():

           $ ./string_comp ABC ABC
           <str1> și <str2> sunt egale
           $ ./string_comp ABC AB      # codul ASCII de 'C' este 67; 'C' - '\0' = 67
           <str1> este mai mare decât <str2> (67)
           $ ./string_comp ABA ABZ     # codul ASCII de 'A' este 65; codul ASCII de 'Z' este 90
           <str1> este mai mic decât <str2> (-25)
           $ ./string_comp ABJ ABC
           <str1> este mai mare decât <str2> (7)
           $ ./string_comp $'\201' A   # 0201 - 0101 = 0100 (sau 64 zecimal)
           <str1> este mai mare decât <str2> (64)

       Ultimul  exemplu utilizează o sintaxă specifică bash(1) pentru a produce un șir care conține un cod ASCII
       pe 8 biți; rezultatul demonstrează că această comparare a șirurilor utilizează caractere fără semn.

       Și apoi câteva exemple folosind strncmp():

           $ ./string_comp ABC AB 3
           <str1> este mai mare decât <str2> (67)
           $ ./string_comp ABC AB 2
           <str1> și <str2> sunt egale în primii 2 octeți

   Sursa programului

       /* string_comp.c

          Licențiat sub licența publică generală GNU v2 sau o versiune ulterioară.
       */
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       int
       main(int argc, char *argv[])
       {
           int res;

           if (argc < 3) {
               fprintf(stderr, "Utilizare: %s <str1> <str2> [<len>]\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           if (argc == 3)
               res = strcmp(argv[1], argv[2]);
           else
               res = strncmp(argv[1], argv[2], atoi(argv[3]));

           if (res == 0) {
               printf("<str1> și <str2> sunt egale");
               if (argc > 3)
                   printf(" în primii %d octeți\n", atoi(argv[3]));
               printf("\n");
           } else if (res < 0) {
               printf("<str1> este mai mic decât <str2> (%d)\n", res);
           } else {
               printf("<str1> este mai mare decât <str2> (%d)\n", res);
           }

           exit(EXIT_SUCCESS);
       }

CONSULTAȚI ȘI

       memcmp(3), strcasecmp(3), strcoll(3), string(3), strncasecmp(3),  strverscmp(3),  wcscmp(3),  wcsncmp(3),
       ascii(7)

TRADUCERE

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

       Această traducere este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3  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.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                        strcmp(3)