Рядки можна порівнювати за допомогою функції string або без використання функції string. Спочатку ми розглянемо, як можна порівняти рядки за допомогою функції string, тобто strcmp(), який визначено в a рядок.h файл заголовка.
Порівняння рядків за допомогою функції string
Рядкова функція, попередньо визначена в 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 не досягне нульового символу.
Вихід: