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<>
>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('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; }
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ö:
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('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; }
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ö:
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('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; }
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ö: