Șirurile pot fi comparate fie folosind funcția șir, fie fără a utiliza funcția șir. În primul rând, ne vom uita la modul în care putem compara șirurile cu ajutorul funcției șir, adică, strcmp(), care este definit în a sfoară.h fișier antet.
Compararea șirurilor prin utilizarea funcției șir
Funcția șir care este predefinită în a sfoară.h fișierul antet este un strcmp() funcţie. Funcția strcmp() ia în considerare două șiruri de caractere ca parametru, iar această funcție returnează o valoare întreagă unde valoarea întreagă poate fi zero , pozitiv sau negativ .
Sintaxa funcției strcmp() este dată mai jos:
int strcmp (const char* str1, const char* str2);
În sintaxa de mai sus, doi parametri sunt trecuți ca șiruri de caractere, adică str1 și str2 , iar tipul de returnare este int înseamnă că strcmp() returnează o valoare întreagă.
Funcția strcmp() compară caracterul ambelor șiruri. Dacă primul caracter al ambelor șiruri este același, atunci acest proces de comparare va continua până când toate caracterele sunt comparate sau indicatorul indică caracterul nul „ ”.
Posibile valori returnate de la funcția strcmp().
Valoare returnată | Descriere |
---|---|
0 | Când ambele șiruri sunt egale. |
<0< td> | Dacă valoarea ASCII a unui caracter din primul șir este mai mică decât valoarea ASCII a unui caracter din al doilea șir, atunci funcția va returna valoare negativă. | 0<>
>0 | Dacă valoarea ASCII a unui caracter din primul șir este mai mare decât valoarea ASCII a unui caracter din al doilea șir, atunci funcția va returna o valoare pozitivă. |
Să înțelegem printr-un exemplu.
#include #include int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array int value; // declaration of integer variable printf('Enter the first string : '); scanf('%s',str1); printf('Enter the second string : '); scanf('%s',str2); // comparing both the strings using strcmp() function value=strcmp(str1,str2); if(value==0) printf('strings are same'); else printf('strings are not same'); return 0; }
Analiza programului de mai sus
- Am declarat două matrice de tip char, adică str1 și str2. Luăm intrarea utilizatorului ca șiruri de caractere.
- Comparăm șirurile folosind strcmp() funcție, adică strcmp(str1,str2). Această funcție va compara atât șirurile str1, cât și str2. Dacă funcția returnează valoarea 0 înseamnă că ambele șiruri sunt aceleași, altfel șirurile nu sunt egale.
Ieșire:
Comparație de șiruri fără a utiliza funcția strcmp().
#include int compare(char[],char[]); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf('Enter the first string : '); scanf('%s',str1); printf('Enter the second string : '); scanf('%s',str2); int c= compare(str1,str2); // calling compare() function if(c==0) printf('strings are same'); else printf('strings are not same'); return 0; } // Comparing both the strings. int compare(char a[],char b[]) { int flag=0,i=0; // integer variables declaration while(a[i]!=' ' &&b[i]!=' ') // while loop { if(a[i]!=b[i]) { flag=1; break; } i++; } if(flag==0) return 0; else return 1; }
Analiza programului de mai sus
- În cele de mai sus, am declarat două matrice de tip char și luăm intrarea utilizatorului ca șiruri.
- Am definit o funcție compare() care va lua șirurile introduse de utilizator ca parametru și va compara ambele șiruri. Dacă funcția returnează 0, ceea ce înseamnă că ambele șiruri sunt egale, altfel ambele șiruri nu sunt egale .
Ieșire:
Compararea șirurilor de caractere prin folosirea indicatorilor
#include int stringcompare(char*,char*); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf('Enter the first string : '); scanf('%s',str1); printf(' Enter the second string : '); scanf('%s',str2); int compare=stringcompare(str1,str2); // calling stringcompare() function. if(compare==0) printf('strings are equal'); else printf('strings are not equal'); return 0; } // Comparing both the strings using pointers int stringcompare(char *a,char *b) { int flag=0; while(*a!=' ' && *b!=' ') // while loop { if(*a!=*b) { flag=1; } a++; b++; } if(flag==0) return 0; else return 1; }
Analiza programului de mai sus
- Am creat două matrice de tip char str1 și str2. Luăm intrarea utilizatorului ca șiruri de caractere.
- Am definit o funcție stringcompare() care va lua ca parametru doi pointeri de tip char. Pointerul „a” deține adresa lui str1 și indicatorul „b” deține adresa lui str2. În interiorul funcției, am creat o buclă while care se va executa până când pointerul a sau b nu este atins la un caracter nul.
Ieșire: