Łańcuchy można porównywać albo przy użyciu funkcji string, albo bez użycia funkcji string. Najpierw przyjrzymy się, jak możemy porównać ciągi za pomocą funkcji łańcuchowej, tj. strcmp(), który jest zdefiniowany w a ciąg.h plik nagłówkowy.
Porównanie ciągów za pomocą funkcji ciągów
Funkcja łańcuchowa, która jest wstępnie zdefiniowana w a ciąg.h plik nagłówkowy to plik strcmp() funkcjonować. Funkcja strcmp() traktuje dwa ciągi znaków jako parametr i zwraca wartość całkowitą tam, gdzie może być to wartość całkowita zero , pozytywny Lub negatywny .
Poniżej podana jest składnia funkcji strcmp():
int strcmp (const char* str1, const char* str2);
W powyższej składni dwa parametry są przekazywane jako ciągi znaków, tj. str1 I str2 , a typem zwracanym jest wew oznacza, że strcmp() zwraca wartość całkowitą.
Funkcja strcmp() porównuje charakter obu ciągów. Jeśli pierwszy znak obu ciągów jest taki sam, proces porównywania będzie kontynuowany, aż wszystkie znaki zostaną porównane lub wskaźnik wskaże znak zerowy „ ”.
Możliwe wartości zwracane przez funkcję strcmp().
Wartość zwracana | Opis |
---|---|
0 | Gdy oba ciągi są równe. |
<0< td> | Jeżeli wartość ASCII znaku pierwszego ciągu jest mniejsza niż wartość ASCII znaku drugiego ciągu, to funkcja zwróci wartość ujemną. | 0<>
>0 | Jeżeli wartość ASCII znaku pierwszego ciągu jest większa niż wartość ASCII znaku drugiego ciągu, to funkcja zwróci wartość dodatnią. |
Rozumiemy na przykładzie.
#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 powyższego programu
- Zadeklarowaliśmy dwie tablice typu char, tj. str1 i str2. Dane wejściowe użytkownika przyjmujemy jako ciągi znaków.
- Porównujemy ciągi znaków za pomocą metody strcmp() funkcja, tj. strcmp(str1,str2). Ta funkcja porówna oba ciągi str1 i str2. Jeśli funkcja zwróci wartość 0, oznacza to, że oba ciągi znaków są takie same, w przeciwnym razie ciągi nie są równe.
Wyjście:
Porównanie ciągów znaków bez użycia funkcji 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 powyższego programu
- Powyżej zadeklarowaliśmy dwie tablice typu char, a dane wejściowe użytkownika przyjmujemy jako ciągi znaków.
- Zdefiniowaliśmy funkcję Compare(), która przyjmuje jako parametr ciągi wejściowe użytkownika i porównuje oba ciągi. Jeśli funkcja zwróci 0, co oznacza, że oba ciągi znaków są równe, w przeciwnym razie oba ciągi nie są równe .
Wyjście:
Porównanie ciągów za pomocą wskaźników
#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 powyższego programu
- Stworzyliśmy dwie tablice typu char str1 i str2. Dane wejściowe użytkownika przyjmujemy jako ciągi znaków.
- Zdefiniowaliśmy funkcję stringcompare(), która jako parametr przyjmuje dwa wskaźniki typu char. Wskaźnik „a” przechowuje adres str1, a wskaźnik „b” przechowuje adres str2. Wewnątrz funkcji utworzyliśmy pętlę while, która będzie wykonywana do momentu, gdy wskaźnik a lub b nie osiągnie znaku zerowego.
Wyjście: