strcmp(3) Library Functions Manual strcmp(3) NUME strcmp, strncmp - compara doua iruri BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include int strcmp(const char *s1, const char *s2); int strncmp(const char s1[.n], const char s2[.n], size_t n); DESCRIERE Funcia strcmp() compara cele doua iruri s1 i s2. Nu se ia in considerare locaia (pentru o comparaie care ine cont de locaie, a se vedea strcoll(3)). Comparaia se face folosind caractere fara semn. strcmp() returneaza un numar intreg care indica rezultatul comparaiei, dupa cum urmeaza: o 0, in cazul in care s1 i s2 sunt egale; o o valoare negativa daca s1 este mai mic decat s2; o o valoare pozitiva daca s1 este mai mare decat s2. Funcia strncmp() este similara, cu excepia faptului ca aceasta compara numai primii (cel mult) n octei din s1 i s2. VALOAREA RETURNATA Funciile strcmp() i strncmp() returneaza un numar intreg mai mic, egal sau mai mare decat zero daca se constata ca s1 (sau primii n octei ai acestuia) este mai mic decat, se potrivete sau este mai mare decat s2. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |strcmp(), strncmp() | Sigurana firelor | MT-Safe | +--------------------------------------+---------------------+---------+ VERSIUNI POSIX.1 specifica doar ca: Semnul unei valori de returnare diferita de zero este determinat de semnul diferenei dintre valorile primei perechi de octei (ambele interpretate ca fiind de tip unsigned char) care difera in irurile comparate. In glibc, ca i in majoritatea celorlalte implementari, valoarea de returnare este rezultatul aritmetic al scaderii ultimului octet comparat din s2 din ultimul octet comparat din s1; (daca cele doua caractere sunt egale, aceasta diferena 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 funcionarea lui strcmp() (atunci cand i se dau doua argumente) i strncmp() (atunci cand i se dau trei argumente). Mai intai, cateva exemple care utilizeaza strcmp(): $ ./string_comp ABC ABC i sunt egale $ ./string_comp ABC AB # codul ASCII de 'C' este 67; 'C' - '\0' = 67 este mai mare decat (67) $ ./string_comp ABA ABZ # codul ASCII de 'A' este 65; codul ASCII de 'Z' este 90 este mai mic decat (-25) $ ./string_comp ABJ ABC este mai mare decat (7) $ ./string_comp $'\201' A # 0201 - 0101 = 0100 (sau 64 zecimal) este mai mare decat (64) Ultimul exemplu utilizeaza o sintaxa specifica bash(1) pentru a produce un ir care conine un cod ASCII pe 8 bii; rezultatul demonstreaza ca aceasta comparare a irurilor utilizeaza caractere fara semn. i apoi cateva exemple folosind strncmp(): $ ./string_comp ABC AB 3 este mai mare decat (67) $ ./string_comp ABC AB 2 i sunt egale in primii 2 octei Sursa programului /* string_comp.c Liceniat sub licena publica generala GNU v2 sau o versiune ulterioara. */ #include #include #include int main(int argc, char *argv[]) { int res; if (argc < 3) { fprintf(stderr, "Utilizare: %s []\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(" i sunt egale"); if (argc > 3) printf(" in primii %d octei\n", atoi(argv[3])); printf("\n"); } else if (res < 0) { printf(" este mai mic decat (%d)\n", res); } else { printf(" este mai mare decat (%d)\n", res); } exit(EXIT_SUCCESS); } CONSULTAI I memcmp(3), strcasecmp(3), strcoll(3), string(3), strncasecmp(3), strverscmp(3), wcscmp(3), wcsncmp(3), ascii(7) 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 strcmp(3)