
10. Compararea a două şiruri
int strcmp(const char *s1, const char *s2);
Descriere
Funcţia strcmp compară şirul s1 cu şirul s2. Compararea începe cu primul caracter din fiecare şir şi continuă secvenţial, până când cele două caractere comparate sunt diferite sau până când unul dintre şiruri se termină.
Se compară codurile ASCII ale caracterelor, astfel, un caracter este mai mic decât altul, dacă are codul ASCII mai mic. Se consideră mai mic şirul care conţine caracterul mai mic.
Dacă cele două şiruri pe percursul comparării au toate caracterele egale, dar unul dintre ele se termină, se consideră mai mic şirul care se terminat (are mai puţina caractere).
Valoarea returnată
Returnează o valoare < 0, dacă s1<s2
Returnează o valoare =0, dacă s1=s2
Returnează o valoare >0, dacă s1>s2
#include <iostream.h> //CAUTARE SIR
#include <string.h>
#include <conio.h>
void main()
{char sir1[50],sir2[50],*p;
cout<<"introduceti sir1:"; cin>>sir1;
cout<<"introduceti sir2:"; cin>>sir2;
p=strstr(sir1,sir2);
if(p)
cout<<sir2<<" se gaseste pe pozitia "<<(p-sir1)<<" in sir";
else
cout<<sir2<<" nu se gaseste in sir1";
getch();
}
Exemplu:Se citesc două cuvinte. Să se afişeze cuvintele în ordine lexicorafică. Se va afişa un mesaj în cazul în care cele două cuvinte sunt egale.
//COMPARARE SIRURI
#include <iostream.h>
#include <string.h>
#include <conio.h>
void main()
{char sir1[50],sir2[50];
int k;
cout<<"introduceti sir1:"; cin>>sir1;
cout<<"introduceti sir2:"; cin>>sir2;
k=strcmp(sir1,sir2); //compară cele două siruri
if(k<0)
cout<<sir1<<" "<<sir2;
else
if(k>0)
cout<<sir2<<" "<<sir1;
else
cout<<"sirurile sunt egale";
getch();
}