strcmp()
Funcția
strcmp()compară două șiruri de caractere caracter cu caracter, în ordine lexicografică.
Compararea caracterelor se face după codul lor ASCII. Prin urmare, se va face diferență între literele majuscule / minuscule.
- Sintaxa
int strcmp(const char* sir1, const char* sir2);- Parametri
sir1: primul șir de caractere comparat;sir2: al doilea șir de caractere comparat.
- Returnare
- Funcția returnează, în funcție de șirurile comparate, un număr întreg:
= 0, dacă șirurile sunt identice;< 0, dacă primul caracter diferit dinsir1este mai mic decât cel dinsir2;> 0, dacă primul caracter diferit dinsir1este mai mare decât cel dinsir2.
Numărul întreg returnat reprezintă de fapt diferența codurilor ASCII între primele două caractere diferite din cele 2 șiruri de caractere.
Exemplu de utilizare
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char s1[] = "portocala";
char s2[] = "portocaliu";
int rezultat = strcmp(s1, s2);
if (rezultat == 0)
cout << "Sirurile sunt identice" << endl;
else if (rezultat < 0)
cout << "\"" << s1 << "\" este mai mic decat \"" << s2 << "\"" << endl;
else
cout << "\"" << s1 << "\" este mai mare decat \"" << s2 << "\"" << endl;
cout << rezultat;
return 0;
}
"portocala" este mai mic decat "portocaliu"
-8
Variabila rezultat, afișată la final, arată diferența codurilor ASCII dintre primele caractere care diferă în cele 2 șiruri. În cazul nostru, valoarea reprezintă rezultatul operației 'a' - 'i'.
strncmp()
Funcția
strncmp()compară lexicografic un număr maxim de caractere din 2 șiruri de caractere.
Compararea lexicografică a caracterelor este făcută prin codul ASCII. Literele majuscule / minuscule diferă între ele.
- Sintaxa
int strncmp(const char* sir1, const char* sir2, size_t n);- Parametri
sir1: primul șir de caractere comparat;sir2: al doilea șir de caractere comparat;n: numărul maxim de caractere de comparat.
- Returnare
- Funcția returnează la fel, în funcție de diferența lexicografică, un număr întreg:
= 0, dacă primelencaractere din cele două șiruri sunt identice;< 0, dacăsir1este mai mic lexicografic considerând doar primelencaractere;< 0, dacăsir1este mai mare lexicografic considerând doar primelencaractere.
Numărul întreg returnat reprezintă de fapt diferența codurilor ASCII între primele două caractere diferite din cele două șiruri de caractere, în limita maximă precizată prin al treilea parametru al funcției.
Exemplu de utilizare
Pe același principiu cu exemplul anterior, vom folosi funcția strncmp() pentru a compara prefixul cuvintelor.
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char s1[] = "portocala";
char s2[] = "portocaliu";
int rezultat = strncmp(s1, s2, 7);
if (rezultat == 0)
cout << "Sirurile sunt identice" << endl;
else if (rezultat < 0)
cout << "\"" << s1 << "\" este mai mic decat \"" << s2 << "\"" << endl;
else
cout << "\"" << s1 << "\" este mai mare decat \"" << s2 << "\"" << endl;
return 0;
}
Sirurile sunt identice
Dacă un șir de caractere comparat are lungimea mai mică și este prefix pentru al doilea șir, funcția consideră caracterul comparat din primul șir ca fiind NULL, iar rezultatul comparației va fi chiar codul ASCII al caracterului din celălalt șir.