logo

C-ohjelma kahden merkkijonon vertaamiseen

Merkkijonoja voidaan verrata joko käyttämällä merkkijonofunktiota tai ilman merkkijonofunktiota. Ensin tarkastellaan, kuinka voimme verrata merkkijonoja merkkijonofunktion avulla, ts. strcmp(), joka on määritelty kohdassa a merkkijono.h otsikkotiedosto.

Merkkijonojen vertailu käyttämällä merkkijonofunktiota

Merkkijonofunktio, joka on ennalta määritetty kohdassa a merkkijono.h otsikkotiedosto on a strcmp() toiminto. Strcmp()-funktio pitää kahta merkkijonoa parametrina, ja tämä funktio palauttaa kokonaisluvun arvon, jossa kokonaislukuarvo voi olla nolla , positiivinen tai negatiivinen .

Strcmp()-funktion syntaksi on annettu alla:

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

Yllä olevassa syntaksissa kaksi parametria välitetään merkkijonoina, ts. str1 ja str2 , ja palautustyyppi on int tarkoittaa, että strcmp() palauttaa kokonaisluvun.

Strcmp()-funktio vertaa molempien merkkijonojen luonnetta. Jos molempien merkkijonojen ensimmäinen merkki on sama, tämä vertailu jatkuu, kunnes kaikkia merkkejä on verrattu tai osoitin osoittaa nollamerkkiin .

Mahdolliset palautusarvot strcmp()-funktiosta

Palautusarvo Kuvaus
0 Kun molemmat merkkijonot ovat yhtä suuret.
<0< td> Jos ensimmäisen merkkijonon merkin ASCII-arvo on pienempi kuin toisen merkkijonon merkin ASCII-arvo, funktio palauttaa negatiivisen arvon.
>0 Jos ensimmäisen merkkijonon merkin ASCII-arvo on suurempi kuin toisen merkkijonon ASCII-arvo, funktio palauttaa positiivisen arvon.

Ymmärretään esimerkin kautta.

 #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; } 

Yllä olevan ohjelman analyysi

  • Olemme ilmoittaneet kaksi char-tyyppistä taulukkoa, eli str1 ja str2. Otamme käyttäjän syötteen merkkijonoina.
  • Vertailemme merkkijonoja käyttämällä strcmp() toiminto, eli strcmp(str1, str2). Tämä funktio vertaa sekä merkkijonoja str1 että str2. Jos funktio palauttaa arvon 0 tarkoittaa, että molemmat merkkijonot ovat samat, muuten merkkijonot eivät ole samanarvoisia.

Lähtö:

C-ohjelma kahden merkkijonon vertaamiseen
C-ohjelma kahden merkkijonon vertaamiseen

Merkkijonojen vertailu ilman strcmp()-funktiota

 #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; } 

Yllä olevan ohjelman analyysi

  • Yllä olevassa olemme ilmoittaneet kaksi char-tyyppistä taulukkoa ja otamme käyttäjän syötteen merkkijonoina.
  • Olemme määrittäneet vertailu()-funktion, joka ottaa käyttäjän syöttämät merkkijonot parametriksi ja vertaa molempia merkkijonoja. Jos funktio palauttaa 0, mikä tarkoittaa, että molemmat merkkijonot ovat yhtä suuret, muuten kumpikaan merkkijono ei ole sama .

Lähtö:

C-ohjelma kahden merkkijonon vertaamiseen

Merkkijonojen vertailu osoittimia käyttämällä

 #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; } 

Yllä olevan ohjelman analyysi

  • Olemme luoneet kaksi taulukkoa char-tyypeistä str1 ja str2. Otamme käyttäjän syötteen merkkijonoina.
  • Olemme määrittäneet stringcompare()-funktion, joka ottaa kaksi char-tyyppistä osoitinta parametrina. A-osoitin sisältää str1:n osoitteen ja b-osoitin str2:n osoitteen. Toiminnon sisällä olemme luoneet while-silmukan, joka suoritetaan, kunnes osoitin a tai b ei saavuta nollamerkkiä.

Lähtö:

C-ohjelma kahden merkkijonon vertaamiseen