strcmp( )

  Subprogramul strcmp() compară două șiruri de caractere și returnează o valoare în funcție de ordinea lexicografică a lor.

strcmp()

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:
  1. <0  dacă primul caracter diferit din s1 este mai mic decât cel din s2;
  2. 0    dacă cele două șiruri sunt identice;
  3. >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()

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.