Як порівняти два рядки на мові програмування C
Рядок, який менше, лексикографічно менше (вона починається з букв, які попереду початкових букв іншого рядка в словнику).
Кроки
1
Увімкніть бібліотеку рядків у вашу програму. Ця бібліотека містить багато корисних функцій, використовуваних при роботі з рядками, у тому числі одну, яка порівнює їх. Помістіть наступний код у верхню частину програми, з іншими включеними командами.include <</span>string.h
2
Оголосіть рядкові змінні. Це будуть рядки, які ви будете порівнювати. Зверніть увагу, що рядки в C оголошені як масиви символів, не як особливий тип string.char string1[limit], string2[limit];// Replace "limit" with the maximum length of the strings
3
Вирішіть, скільки символів ви хочете порівняти.- Чим більше ви порівнюєте, тим вище точність ви досягнете (Наприклад, якщо рядки були "Hell" і "Hello", і ви порівняли чотири символи, то вони будуть виглядати також).
- Якщо порівнювати багато символів, порівняння буде повільніше.
- Немає необхідності робити це число більше, ніж довжини рядків (немає символів для порівняння після їх завершення).
4
Створіть змінну, що містить кількість символів для порівняння.int compareLimit = 100;// Here, the limit is 100. However, you may change it to satisfy your needs.
5
Ініціалізуйте рядка. Ви можете присвоїти значення вручну, вважати його з входу, вважати його з файлу ...6
Порівняйте рядка. Порівняння виконується за допомогою функції strncmp (), а повертається тип є цілим числом - integer.int result = strncmp(string1, string2, compareLimit);
7
Перевірте результат. Якщо він позитивний, перший рядок - більше. Якщо він негативний, друга - більше. Якщо він дорівнює 0, то вони рівні.if(result 0)printf("String1> string2");else if(result <</span> 0)printf("String2> string1");elseprintf("String1 == string2");
Приклад коду
Програма, яка відповідає на прості питання («Як тебе звати?", "Як справи?", "Що ви думаєте про WikiHow?")
#include #include int main(){printf("Hello! Ask me a question! N");while(1){char str[100];scanf("% S",str);int res = strncmp(str, "What is your name?", 100);if(res == 0)printf("I`m a program, I do not have a name! N");res = strncmp(str, "How are you?", 100);if(res == 0)printf("Fine. N");res = strncmp(str, "What do you think of wikiHow?", 100);if(res == 0)printf("It`s great!");}}
Поради
- Ця функція може бути використана в утвердженні "if".
- Параметр compareLimit вказує strncmpмаксімальное кількість символів для вивчення. Використання strncmp замість оригінального strcmp (також як інші strn * процедури в порівнянні з їх str * доповненнями) є одним з багатьох способів, за допомогою якого програми C можна зробити більш стабільними і безпечними.
Попередження
- Пам`ятайте, що значення дорівнює 0 у випадку, якщо рядки збігаються. Це може збити вас з пантелику, тому що 0 є також значенням FALSE (ЛОЖЬ).