logo

C-programma om de twee strings te vergelijken

Strings kunnen worden vergeleken met behulp van de stringfunctie of zonder de stringfunctie te gebruiken. Eerst zullen we bekijken hoe we de strings kunnen vergelijken met behulp van de stringfunctie, d.w.z. strcmp(), die is gedefinieerd in a string.h header-bestand.

Tekenreeksvergelijking met behulp van de tekenreeksfunctie

De stringfunctie die vooraf is gedefinieerd in a string.h header-bestand is een strcmp() functie. De functie strcmp() beschouwt twee tekenreeksen als een parameter, en deze functie retourneert een geheel getal waarbij de gehele waarde kan zijn nul , positief of negatief .

De syntaxis van de strcmp()-functie wordt hieronder gegeven:

 int strcmp (const char* str1, const char* str2); 

In de bovenstaande syntaxis worden twee parameters doorgegeven als tekenreeksen, d.w.z. str1 En str2 , en het retourtype is int betekent dat strcmp() een geheel getal retourneert.

De functie strcmp() vergelijkt het karakter van beide strings. Als het eerste teken van beide strings hetzelfde is, gaat dit vergelijkingsproces door totdat alle tekens zijn vergeleken of de aanwijzer naar het nulteken '' wijst.

Mogelijke retourwaarden van de strcmp() functie

Winstwaarde Beschrijving
0 Wanneer beide snaren gelijk zijn.
<0< td> Als de ASCII-waarde van een teken uit de eerste tekenreeks kleiner is dan de ASCII-waarde van een teken uit de tweede tekenreeks, retourneert de functie een negatieve waarde.
>0 Als de ASCII-waarde van een teken uit de eerste tekenreeks groter is dan de ASCII-waarde van een teken uit de tweede tekenreeks, retourneert de functie een positieve waarde.

Laten we het begrijpen aan de hand van een voorbeeld.

 #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(&apos;Enter the first string : &apos;); scanf(&apos;%s&apos;,str1); printf(&apos;Enter the second string : &apos;); scanf(&apos;%s&apos;,str2); // comparing both the strings using strcmp() function value=strcmp(str1,str2); if(value==0) printf(&apos;strings are same&apos;); else printf(&apos;strings are not same&apos;); return 0; } 

Analyse van het bovenstaande programma

  • We hebben twee arrays van het char-type gedeclareerd, namelijk str1 en str2. We nemen de gebruikersinvoer als tekenreeksen.
  • We vergelijken de snaren met behulp van de strcmp() functie, dat wil zeggen, strcmp(str1,str2). Deze functie vergelijkt zowel de strings str1 als str2. Als de functie de waarde 0 retourneert, betekent dit dat beide strings hetzelfde zijn, anders zijn de strings niet gelijk.

Uitgang:

C-programma om de twee strings te vergelijken
C-programma om de twee strings te vergelijken

Tekenreeksvergelijking zonder de strcmp()-functie te gebruiken

 #include int compare(char[],char[]); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf(&apos;Enter the first string : &apos;); scanf(&apos;%s&apos;,str1); printf(&apos;Enter the second string : &apos;); scanf(&apos;%s&apos;,str2); int c= compare(str1,str2); // calling compare() function if(c==0) printf(&apos;strings are same&apos;); else printf(&apos;strings are not same&apos;); return 0; } // Comparing both the strings. int compare(char a[],char b[]) { int flag=0,i=0; // integer variables declaration while(a[i]!=&apos;&apos; &amp;&amp;b[i]!=&apos;&apos;) // while loop { if(a[i]!=b[i]) { flag=1; break; } i++; } if(flag==0) return 0; else return 1; } 

Analyse van het bovenstaande programma

  • In het bovenstaande hebben we twee arrays van het char-type gedeclareerd en nemen we de gebruikersinvoer als strings.
  • We hebben een functie Compare() gedefinieerd die tekenreeksen van gebruikersinvoer als parameter neemt en beide tekenreeksen vergelijkt. Als de functie 0 retourneert, betekent dit dat beide strings gelijk zijn, anders zijn beide strings niet gelijk .

Uitgang:

C-programma om de twee strings te vergelijken

Tekenreeksvergelijking met behulp van pointers

 #include int stringcompare(char*,char*); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf(&apos;Enter the first string : &apos;); scanf(&apos;%s&apos;,str1); printf(&apos;
Enter the second string : &apos;); scanf(&apos;%s&apos;,str2); int compare=stringcompare(str1,str2); // calling stringcompare() function. if(compare==0) printf(&apos;strings are equal&apos;); else printf(&apos;strings are not equal&apos;); return 0; } // Comparing both the strings using pointers int stringcompare(char *a,char *b) { int flag=0; while(*a!=&apos;&apos; &amp;&amp; *b!=&apos;&apos;) // while loop { if(*a!=*b) { flag=1; } a++; b++; } if(flag==0) return 0; else return 1; } 

Analyse van het bovenstaande programma

  • We hebben twee arrays gemaakt van het char-type str1 en str2. We nemen de gebruikersinvoer als tekenreeksen.
  • We hebben een stringcompare()-functie gedefinieerd die twee pointers van het type char als parameter zal gebruiken. De 'a'-aanwijzer bevat het adres van str1 en de 'b'-aanwijzer bevat het adres van str2. Binnen de functie hebben we een while-lus gemaakt die wordt uitgevoerd totdat de aanwijzer a of b niet is bereikt naar een nulteken.

Uitgang:

C-programma om de twee strings te vergelijken