strcmp( )
Subprogramul strcmp()
compară două șiruri de caractere și returnează o valoare în funcție de ordinea lexicografică a lor.
Parametri
<șir1>
: unul dintre șirurile de comparat;<șir2>
: celălalt dintre șirurile de comparat.
Returnare
- În funcție de ordinea lexicografică, se va returna o valoare:
<0
dacă primul caracter diferit din s1 este mai mic decât cel din s2;0
dacă cele două șiruri sunt identice;>0
dacă primul caracter diferit din s1 este mai mare decât cel din s2.
Utilizare
Subprogramul strcmp()
și derivatele acesteia fac parte din biblioteca <cstring>
, care trebuie inclusă în directiva de preprocesare.
#include <cstring>
...
int main(){
char s[51];
cout<<"Care este fructul meu preferat?\n";
cin.get(s,51);
while(strcmp(s,"portocala")!=0){
cin.get();
cin.get(s,51);
}
cout<<"Corect, portocala!";
return 0;
}
Care este fructul meu preferat?
pruna
piersica
mar
portocala
Corect, portocala!
Vom tot citi șirul până când compararea lui cu „portocala” returnează 0, atunci însemnând că s-a introdus șirul identic.
stricmp() / strcmpi()
Acest subprogram operează identic cu strcmp()
, singura diferență fiind că nu este „case sensible” compararea (literele mari nu diferă de cele mici).
#include <cstring>
...
int main(){
if(!stricmp("salut","SAlUt")) cout<<"Sirurile sunt identice.";
else cout<<"Sirurile difera.";
return 0;
}
Sirurile sunt identice.
strncmp()
Cel de-al treilea parametru pe care îl aduce funcția strncmp()
va determina compararea primelor <nr>
caractere, executarea oprindu-se la prima diferență, când se întâlnește caracterul NULL
, sau când toate cele <nr>
caractere coincid.
Ceilalți doi parametri și valorile returnate coincid cu cele ale lui strcmp()
.
#include <cstring>
...
int main(){
char cuv[21], s[][11]={"albastru", "broasca", "albus", "alb"};
cout<<"Verificam existenta prefixului de 3 litere al cuvantului: ";
cin.get(cuv,21);
for(int i=0; i<4; i++)
if(strncmp(s[i],cuv,3) == 0)
cout<<"Coincide cu "<<s[i];
return 0;
}
Verificam existenta prefixului de 3 litere al cuvantului: albastrele
Coincide cu albastru
Coincide cu albus
Coincide cu alb
strncmpi()
Acest subprogram are același principiu cu strncmp()
, doar că nu va ține cont dacă literele sunt mari sau mici.
#include <cstring>
...
int main(){
if(!strncmpi("Lacul Sfanta Ana","lacatus1412",3)) cout<<"Prefixele sunt identice.";
else cout<<"Prefixele difera.";
return 0;
}
Prefixele sunt identice.