Les cadenes es poden comparar utilitzant la funció string o sense utilitzar la funció string. Primer, veurem com podem comparar les cadenes amb l'ajuda de la funció de cadenes, és a dir, strcmp(), que es defineix en a corda.h fitxer de capçalera.
Comparació de cadenes utilitzant la funció de cadenes
La funció de cadena que està predefinida en a corda.h el fitxer de capçalera és a strcmp() funció. La funció strcmp() considera dues cadenes com a paràmetre, i aquesta funció retorna un valor enter on el valor sencer pot ser zero , positiu o negatiu .
La sintaxi de la funció strcmp() es mostra a continuació:
int strcmp (const char* str1, const char* str2);
A la sintaxi anterior, es passen dos paràmetres com a cadenes, és a dir, str1 i str2 , i el tipus de retorn és int significa que strcmp() retorna un valor enter.
La funció strcmp() compara el caràcter de les dues cadenes. Si el primer caràcter de les dues cadenes és el mateix, aquest procés de comparació continuarà fins que es comparen tots els caràcters o el punter apunta al caràcter nul ' '.
Possibles valors de retorn de la funció strcmp().
Valor de retorn | Descripció |
---|---|
0 | Quan les dues cordes són iguals. |
<0< td> | Si el valor ASCII d'un caràcter de la primera cadena és menor que el valor ASCII d'un caràcter de la segona cadena, aleshores la funció retornarà un valor negatiu. | 0<>
>0 | Si el valor ASCII d'un caràcter de la primera cadena és més gran que el valor ASCII d'un caràcter de la segona cadena, aleshores la funció retornarà un valor positiu. |
Entenem-ho a través d'un exemple.
#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; }
Anàlisi del programa anterior
- Hem declarat dues matrius de tipus char, és a dir, str1 i str2. Prenem l'entrada de l'usuari com a cadenes.
- Comparem les cadenes utilitzant el strcmp() funció, és a dir, strcmp(str1,str2). Aquesta funció compararà les cadenes str1 i str2. Si la funció retorna el valor 0 significa que les dues cadenes són iguals, en cas contrari les cadenes no són iguals.
Sortida:
Comparació de cadenes sense utilitzar la funció 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; }
Anàlisi del programa anterior
- A l'anterior, hem declarat dues matrius de tipus char, i prenem l'entrada de l'usuari com a cadenes.
- Hem definit una funció compare() que prendrà les cadenes d'entrada de l'usuari com a paràmetre i compararà ambdues cadenes. Si la funció retorna 0, el que significa que les dues cadenes són iguals, en cas contrari, les dues cadenes no són iguals .
Sortida:
Comparació de cadenes utilitzant punters
#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; }
Anàlisi del programa anterior
- Hem creat dues matrius de tipus char str1 i str2. Prenem l'entrada de l'usuari com a cadenes.
- Hem definit una funció stringcompare() que prendrà dos punters de tipus char com a paràmetre. El punter 'a' conté l'adreça de str1 i el punter 'b' conté l'adreça de str2. Dins de la funció, hem creat un bucle while que s'executarà fins que el punter a o b no s'arribi a un caràcter nul.
Sortida: