logo

C program na porovnanie dvoch reťazcov

Reťazce možno porovnávať buď pomocou funkcie reťazca alebo bez použitia funkcie reťazca. Najprv sa pozrieme na to, ako môžeme porovnať reťazce pomocou funkcie reťazca, t.j. strcmp(), ktorý je definovaný v a reťazec.h hlavičkový súbor.

Porovnanie reťazcov pomocou funkcie reťazca

Funkcia reťazca, ktorá je preddefinovaná v a reťazec.h hlavičkový súbor je a strcmp() funkciu. Funkcia strcmp() považuje dva reťazce za parameter a táto funkcia vracia celočíselnou hodnotu, kde môže byť celočíselná hodnota nula , pozitívne alebo negatívne .

Syntax funkcie strcmp() je uvedená nižšie:

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

Vo vyššie uvedenej syntaxi sa dva parametre odovzdávajú ako reťazce, t.j. str1 a str2 a návratový typ je int znamená, že strcmp() vracia celočíselnou hodnotu.

Funkcia strcmp() porovnáva charakter oboch reťazcov. Ak je prvý znak oboch reťazcov rovnaký, tento proces porovnávania bude pokračovať, kým sa neporovnajú všetky znaky alebo kým ukazovateľ neukáže na nulový znak ''.

Možné návratové hodnoty z funkcie strcmp().

Návratová hodnota Popis
0 Keď sú obe struny rovnaké.
<0< td> Ak je hodnota ASCII znaku prvého reťazca menšia ako hodnota ASCII znaku druhého reťazca, funkcia vráti zápornú hodnotu.
>0 Ak je hodnota ASCII znaku prvého reťazca väčšia ako hodnota ASCII znaku druhého reťazca, funkcia vráti kladnú hodnotu.

Poďme to pochopiť na príklade.

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

Analýza vyššie uvedeného programu

  • Deklarovali sme dve polia typu char, t.j. str1 a str2. Užívateľský vstup berieme ako reťazce.
  • Reťazce porovnávame pomocou strcmp() funkciu, t.j. strcmp(str1,str2). Táto funkcia porovná reťazce str1 a str2. Ak funkcia vráti hodnotu 0, znamená to, že oba reťazce sú rovnaké, inak sa reťazce nerovnajú.

Výkon:

C program na porovnanie dvoch reťazcov
C program na porovnanie dvoch reťazcov

Porovnanie reťazcov bez použitia funkcie 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; } 

Analýza vyššie uvedeného programu

  • Vo vyššie uvedenom sme deklarovali dve polia typu char a vstup používateľa berieme ako reťazce.
  • Definovali sme funkciu Compare(), ktorá bude brať užívateľské vstupné reťazce ako parameter a porovnávať oba reťazce. Ak funkcia vráti 0, čo znamená, že oba reťazce sú rovnaké, inak oba reťazce nie sú rovnaké .

Výkon:

C program na porovnanie dvoch reťazcov

Porovnanie reťazcov pomocou ukazovateľov

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

Analýza vyššie uvedeného programu

  • Vytvorili sme dve polia typu char str1 a str2. Užívateľský vstup berieme ako reťazce.
  • Definovali sme funkciu stringcompare(), ktorá bude mať ako parameter dva ukazovatele typu char. Ukazovateľ 'a' obsahuje adresu str1 a ukazovateľ 'b' adresu str2. Vo vnútri funkcie sme vytvorili cyklus while, ktorý sa bude vykonávať, kým sa ukazovateľ a alebo b nedostane na nulový znak.

Výkon:

C program na porovnanie dvoch reťazcov