logo

C програма за сравняване на двата низа

Низовете могат да се сравняват или чрез използване на функцията низ, или без използване на функцията низ. Първо, ще разгледаме как можем да сравним низовете с помощта на функция за низ, т.е. strcmp(), което е определено в a низ.h заглавен файл.

Сравнение на низове чрез използване на функция за низ

Функцията за низ, която е предварително дефинирана в a низ.h заглавният файл е a strcmp() функция. Функцията strcmp() разглежда два низа като параметър и тази функция връща целочислена стойност, където целочислената стойност може да бъде нула , положителен или отрицателен .

Синтаксисът на функцията strcmp() е даден по-долу:

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

В горния синтаксис два параметъра се предават като низове, т.е. str1 и str2 , а типът на връщане е вътр означава, че strcmp() връща целочислена стойност.

Функцията strcmp() сравнява характера на двата низа. Ако първият символ на двата низа е еднакъв, тогава този процес на сравнение ще продължи, докато всички знаци не бъдат сравнени или показалецът не посочи нулевия знак ''.

Възможни връщани стойности от функцията strcmp().

Върната стойност Описание
0 Когато и двата низа са равни.
<0< td> Ако ASCII стойността на символ от първия низ е по-малка от ASCII стойността на символ от втория низ, тогава функцията ще върне отрицателна стойност.
>0 Ако ASCII стойността на символ от първия низ е по-голяма от ASCII стойността на символ от втория низ, тогава функцията ще върне положителна стойност.

Нека разберем чрез пример.

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

Анализ на горната програма

  • Декларирахме два масива от тип char, т.е. str1 и str2. Ние приемаме потребителския вход като низове.
  • Ние сравняваме низовете, като използваме strcmp() функция, т.е. strcmp(str1,str2). Тази функция ще сравни низовете str1 и str2. Ако функцията върне 0 стойност означава, че и двата низа са еднакви, в противен случай низовете не са равни.

Изход:

C програма за сравняване на двата низа
C програма за сравняване на двата низа

Сравнение на низове без използване на функцията 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; } 

Анализ на горната програма

  • В горното сме декларирали два масива от тип char и приемаме въведеното от потребителя като низове.
  • Ние сме дефинирали функция compare(), която ще приема въведени от потребителя низове като параметър и ще сравнява и двата низа. Ако функцията върне 0, което означава, че и двата низа са равни, в противен случай и двата низа не са равни .

Изход:

C програма за сравняване на двата низа

Сравнение на низове чрез използване на указатели

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

Анализ на горната програма

  • Създадохме два масива от тип char str1 и str2. Ние приемаме потребителския вход като низове.
  • Дефинирахме функция stringcompare(), която ще приеме два указателя от тип char като параметър. Указателят 'a' съдържа адреса на str1, а указателят 'b' съдържа адреса на str2. Вътре във функцията създадохме цикъл while, който ще се изпълнява, докато указателят a или b не достигне нулев знак.

Изход:

C програма за сравняване на двата низа