strverscmp(3) Library Functions Manual strverscmp(3) NUME strverscmp - compara doua iruri de versiuni BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #define _GNU_SOURCE /* Consultai feature_test_macros(7) */ #include int strverscmp(const char *s1, const char *s2); DESCRIERE Adesea se dein fiiere ian1, ian2, ..., ian9, ian10, ... i vi se pare ciudat cand ls(1) le ordoneaza ian1, ian10, ..., ian2, ..., ian9. Pentru a corecta acest lucru, GNU a introdus opiunea -v in ls(1), care este implementata cu ajutorul versionsort(3), care folosete din nou strverscmp(). Astfel, sarcina lui strverscmp() este de a compara doua iruri i de a gasi ordinea ,,corecta", in timp ce strcmp(3) gasete doar ordinea lexicografica. Aceasta funcie nu utilizeaza categoria LC_COLLATE a configuraiei regionale, deci este destinata mai ales situaiilor in care se ateapta ca irurile de caractere sa fie in ASCII. Aceasta funcie face urmatoarele. Daca ambele iruri de caractere sunt egale, se returneaza 0. In caz contrar, gasete poziia dintre doi octei care are proprietatea ca inainte de ea ambele iruri sunt egale, in timp ce imediat dupa ea exista o diferena. Gasete cele mai mari iruri de cifre consecutive care conin (sau care incep sau se termina la) aceasta poziie. Daca una sau ambele sunt goale, atunci se returneaza ceea ce ar fi returnat strcmp(3) (ordonarea numerica a valorilor octeilor). In caz contrar, se compara ambele iruri de cifre din punct de vedere numeric, unde irurile de cifre cu unul sau mai multe zerouri de inceput sunt interpretate ca i cum ar avea o virgula in faa (astfel incat, in special, irurile de cifre cu mai multe zerouri de inceput vin inaintea irurilor de cifre cu mai puine zerouri de inceput). Astfel, ordinea este 000, 00, 01, 010, 09, 0, 1, 9, 10. VALOAREA RETURNATA Funcia strverscmp() returneaza un numar intreg mai mic, egal sau mai mare decat zero daca se constata ca s1 este mai inainte, egal sau ulterior lui s2. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |strverscmp() | Sigurana firelor | MT-Safe | +--------------------------------------+---------------------+---------+ STANDARDE GNU. EXEMPLE Programul de mai jos poate fi utilizat pentru a demonstra comportamentul lui strverscmp(). Acesta utilizeaza strverscmp() pentru a compara cele doua iruri de caractere date ca argumente in linia de comanda. Un exemplu de utilizare a acestuia este urmatorul: $ ./a.out ian1 ian10 ian1 < ian10 Sursa programului #define _GNU_SOURCE #include #include #include int main(int argc, char *argv[]) { int res; if (argc != 3) { fprintf(stderr, "Utilizare: %s \n", argv[0]); exit(EXIT_FAILURE); } res = strverscmp(argv[1], argv[2]); printf("%s %s %s\n", argv[1], (res < 0) ? "<" : (res == 0) ? "==" : ">", argv[2]); exit(EXIT_SUCCESS); } CONSULTAI I rename(1), strcasecmp(3), strcmp(3), strcoll(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 strverscmp(3)