A karakterláncok a string függvény használatával vagy a string függvény használata nélkül is összehasonlíthatók. Először azt nézzük meg, hogyan hasonlíthatjuk össze a karakterláncokat a string függvény segítségével, azaz strcmp(), amelyet az a húr.h fejléc fájl.
Karakterlánc-összehasonlítás string függvény használatával
A karakterlánc függvény, amely előre definiált a húr.h fejlécfájl a strcmp() funkció. Az strcmp() függvény két karakterláncot tekint paraméternek, és ez a függvény egy egész értéket ad vissza, ahol az egész érték nulla , pozitív vagy negatív .
Az strcmp() függvény szintaxisa az alábbiakban látható:
int strcmp (const char* str1, const char* str2);
A fenti szintaxisban két paramétert adunk át karakterláncként, pl. str1 és str2 , és a visszatérési típus: int azt jelenti, hogy az strcmp() egész értéket ad vissza.
Az strcmp() függvény összehasonlítja mindkét karakterlánc karakterét. Ha mindkét karakterlánc első karaktere megegyezik, akkor ez az összehasonlítási folyamat addig folytatódik, amíg az összes karaktert össze nem hasonlítja, vagy a mutató a ' ' null karakterre mutat.
Lehetséges visszatérési értékek az strcmp() függvényből
Visszatérési érték | Leírás |
---|---|
0 | Ha mindkét karakterlánc egyenlő. |
<0< td> | Ha az első karakterlánc karakterének ASCII-értéke kisebb, mint a második karakterlánc karakterének ASCII-értéke, akkor a függvény negatív értéket ad vissza. | 0<>
>0 | Ha az első karakterlánc karakterének ASCII-értéke nagyobb, mint a második karakterlánc karakterének ASCII-értéke, akkor a függvény pozitív értéket ad vissza. |
Értsük meg egy példán keresztül.
#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; }
A fenti program elemzése
- Két char típusú tömböt deklaráltunk, azaz az str1-et és az str2-t. A felhasználói bemenetet karakterláncnak vesszük.
- A karakterláncokat a segítségével hasonlítjuk össze strcmp() funkció, azaz strcmp(str1,str2). Ez a függvény összehasonlítja az str1 és str2 karakterláncokat. Ha a függvény 0 értéket ad vissza, az azt jelenti, hogy mindkét karakterlánc azonos, ellenkező esetben a karakterláncok nem egyenlőek.
Kimenet:
String-összehasonlítás strcmp() függvény használata nélkül
#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; }
A fenti program elemzése
- A fentiekben két char típusú tömböt deklaráltunk, és a felhasználói bemenetet karakterláncnak vesszük.
- Meghatároztunk egy összehasonlító() függvényt, amely paraméterként veszi a felhasználói beviteli karakterláncokat, és összehasonlítja mindkét karakterláncot. Ha a függvény 0-t ad vissza, ez azt jelenti, hogy mindkét karakterlánc egyenlő, ellenkező esetben mindkét karakterlánc nem egyenlő .
Kimenet:
Karakterlánc-összehasonlítás mutatók használatával
#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; }
A fenti program elemzése
- Létrehoztunk két str1 és str2 típusú char típusú tömböt. A felhasználói bemenetet karakterláncnak vesszük.
- Meghatároztunk egy stringcompare() függvényt, amely két char típusú mutatót vesz paraméterként. Az „a” mutató az str1 címét, a „b” mutató pedig az str2 címét tartalmazza. A függvényen belül létrehoztunk egy while ciklust, amely addig fut, amíg az a vagy b mutató el nem ér egy null karakterig.
Kimenet: