Dizeler, string işlevi kullanılarak veya dize işlevi kullanılmadan karşılaştırılabilir. Öncelikle string fonksiyonunun yardımıyla stringleri nasıl karşılaştırabileceğimize bakacağız. strcmp(), bir şekilde tanımlanan dize.h başlık dosyası.
String işlevini kullanarak dize karşılaştırması
Bir dizide önceden tanımlanmış olan dize işlevi dize.h başlık dosyası bir strcmp() işlev. strcmp() işlevi iki dizeyi parametre olarak kabul eder ve bu işlev, tamsayı değerinin şu şekilde olabileceği bir tamsayı değeri döndürür: sıfır , pozitif veya olumsuz .
strcmp() fonksiyonunun sözdizimi aşağıda verilmiştir:
int strcmp (const char* str1, const char* str2);
Yukarıdaki sözdiziminde iki parametre dize olarak iletilir; str1 Ve str2 ve dönüş türü int strcmp() fonksiyonunun bir tamsayı değeri döndürdüğü anlamına gelir.
strcmp() işlevi her iki dizenin karakterini karşılaştırır. Her iki dizenin de ilk karakteri aynıysa, bu karşılaştırma işlemi, tüm karakterler karşılaştırılıncaya veya işaretçi ' ' boş karakterini işaret edene kadar devam edecektir.
strcmp() işlevinden olası dönüş değerleri
Geri dönüş değeri | Tanım |
---|---|
0 | Her iki dize eşit olduğunda. |
<0< td> | İlk dizedeki bir karakterin ASCII değeri, ikinci dizedeki bir karakterin ASCII değerinden küçükse, işlev negatif değer döndürür. | 0<>
>0 | Birinci dizedeki bir karakterin ASCII değeri, ikinci dizedeki bir karakterin ASCII değerinden büyükse, işlev pozitif değer döndürecektir. |
Bir örnek üzerinden anlayalım.
#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; }
Yukarıdaki programın analizi
- Char tipinde iki dizi tanımladık, yani str1 ve str2. Kullanıcı girişini string olarak alıyoruz.
- Dizeleri kullanarak karşılaştırırız. strcmp() işlev, yani, strcmp(str1,str2). Bu işlev hem str1 hem de str2 dizelerini karşılaştıracaktır. İşlev 0 değerini döndürürse, her iki dizenin de aynı olduğu, aksi takdirde dizelerin eşit olmadığı anlamına gelir.
Çıktı:
strcmp() işlevini kullanmadan dize karşılaştırması
#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; }
Yukarıdaki programın analizi
- Yukarıda char tipinde iki dizi tanımladık ve kullanıcı girişini string olarak alıyoruz.
- Kullanıcı giriş dizelerini parametre olarak alacak ve her iki dizeyi karşılaştıracak bir Compare() işlevi tanımladık. İşlev 0 değerini döndürürse bu, her iki dizenin de eşit olduğu anlamına gelir, aksi halde her iki dize de eşit değildir .
Çıktı:
İşaretçileri kullanarak dize karşılaştırması
#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; }
Yukarıdaki programın analizi
- Char tipinde str1 ve str2 olmak üzere iki dizi oluşturduk. Kullanıcı girişini string olarak alıyoruz.
- Parametre olarak char türünden iki işaretçiyi alacak bir stringcompare() fonksiyonu tanımladık. 'a' işaretçisi str1'in adresini tutar ve 'b' işaretçisi str2'nin adresini tutar. Fonksiyonun içinde, a veya b işaretçisi boş karaktere ulaşılana kadar çalışacak bir while döngüsü oluşturduk.
Çıktı: