Низовете могат да се сравняват или чрез използване на функцията низ, или без използване на функцията низ. Първо, ще разгледаме как можем да сравним низовете с помощта на функция за низ, т.е. 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<>
>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('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; }
Анализ на горната програма
- Декларирахме два масива от тип char, т.е. str1 и str2. Ние приемаме потребителския вход като низове.
- Ние сравняваме низовете, като използваме strcmp() функция, т.е. strcmp(str1,str2). Тази функция ще сравни низовете str1 и str2. Ако функцията върне 0 стойност означава, че и двата низа са еднакви, в противен случай низовете не са равни.
Изход:
Сравнение на низове без използване на функцията strcmp().
#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; }
Анализ на горната програма
- В горното сме декларирали два масива от тип char и приемаме въведеното от потребителя като низове.
- Ние сме дефинирали функция compare(), която ще приема въведени от потребителя низове като параметър и ще сравнява и двата низа. Ако функцията върне 0, което означава, че и двата низа са равни, в противен случай и двата низа не са равни .
Изход:
Сравнение на низове чрез използване на указатели
#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; }
Анализ на горната програма
- Създадохме два масива от тип char str1 и str2. Ние приемаме потребителския вход като низове.
- Дефинирахме функция stringcompare(), която ще приеме два указателя от тип char като параметър. Указателят 'a' съдържа адреса на str1, а указателят 'b' съдържа адреса на str2. Вътре във функцията създадохме цикъл while, който ще се изпълнява, докато указателят a или b не достигне нулев знак.
Изход: