logo

C program za primerjavo obeh nizov

Nize je mogoče primerjati z uporabo funkcije niza ali brez uporabe funkcije niza. Najprej si bomo ogledali, kako lahko primerjamo nize s pomočjo funkcije niza, tj. strcmp(), ki je opredeljena v a niz.h naslovna datoteka.

Primerjava nizov z uporabo funkcije nizov

Funkcija niza, ki je vnaprej določena v a niz.h glava datoteke je a strcmp() funkcijo. Funkcija strcmp() upošteva dva niza kot parameter in ta funkcija vrne celoštevilsko vrednost, kjer je celoštevilska vrednost lahko nič , pozitivno oz negativno .

Sintaksa funkcije strcmp() je podana spodaj:

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

V zgornji sintaksi sta dva parametra posredovana kot niza, tj. str1 in str2 , povratna vrsta pa je int pomeni, da strcmp() vrne celoštevilsko vrednost.

Funkcija strcmp() primerja znak obeh nizov. Če sta prva znaka obeh nizov enaka, se bo ta postopek primerjave nadaljeval, dokler niso primerjani vsi znaki ali pa kazalec pokaže na ničelni znak ''.

Možne vrnjene vrednosti iz funkcije strcmp().

Povratna vrednost Opis
0 Ko sta oba niza enaka.
<0< td> Če je vrednost ASCII znaka prvega niza manjša od vrednosti ASCII znaka drugega niza, bo funkcija vrnila negativno vrednost.
>0 Če je vrednost ASCII znaka prvega niza večja od vrednosti ASCII znaka drugega niza, bo funkcija vrnila pozitivno vrednost.

Razumejmo skozi primer.

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

Analiza zgornjega programa

  • Deklarirali smo dve matriki tipa char, tj. str1 in str2. Uporabniški vnos vzamemo kot nize.
  • Nize primerjamo z uporabo strcmp() funkcijo, tj. strcmp(str1,str2). Ta funkcija bo primerjala niza str1 in str2. Če funkcija vrne vrednost 0, pomeni, da sta oba niza enaka, sicer niza nista enaka.

Izhod:

C program za primerjavo obeh nizov
C program za primerjavo obeh nizov

Primerjava nizov brez uporabe funkcije strcmp().

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

Analiza zgornjega programa

  • Zgoraj smo deklarirali dve matriki tipa char in uporabniški vnos vzamemo kot nize.
  • Definirali smo funkcijo compare(), ki bo vzela uporabniške vnesene nize kot parameter in primerjala oba niza. Če funkcija vrne 0, kar pomeni, da sta oba niza enaka, sicer oba niza nista enaka .

Izhod:

C program za primerjavo obeh nizov

Primerjava nizov z uporabo kazalcev

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

Analiza zgornjega programa

  • Ustvarili smo dve matriki tipa char str1 in str2. Uporabniški vnos vzamemo kot nize.
  • Definirali smo funkcijo stringcompare(), ki bo kot parameter vzela dva kazalca tipa char. Kazalec 'a' vsebuje naslov str1, kazalec 'b' pa ima naslov str2. Znotraj funkcije smo ustvarili zanko while, ki se bo izvajala, dokler kazalec a ali b ne doseže ničelnega znaka.

Izhod:

C program za primerjavo obeh nizov