logo

C strcmp()

У мові C файл заголовка містить стандартну бібліотеку рядків, яка містить деякі корисні та часто використовувані функції обробки рядків. У цій статті ми побачимо, як порівнювати рядки в C за допомогою функції strcmp().

Що таке strcmp() у C?

C strcmp() — вбудована бібліотечна функція, яка використовується для порівняння рядків. Ця функція приймає два рядки (масив символів) як аргументи, лексикографічно порівнює ці два рядки , а потім повертає 0, 1 або -1 як результат. Визначається всередині файл заголовка з його прототипом наступним чином:



Синтаксис strcmp() у C

strcmp( first_str , second_str );>

Параметри strcmp() у C

Ця функція приймає два рядки (масив символів) як параметри:

    first_str: перший рядок береться як покажчик на постійний символ (тобто незмінний рядок). second_str: другий рядок береться як покажчик на постійний символ.

Примітка: Причина, чому аргументи приймаються як const char * замість тільки char *, полягає в тому, що функція не може змінити рядок, а також зробити їх застосовними для постійних рядків.

Повернене значення strcmp() у C

Функція strcmp() повертає три різні значення після порівняння двох рядків, які є такими:



1. Нуль ( 0 )

Значення, що дорівнює нулю, якщо обидва рядки виявляються ідентичними. Тобто, усі символи в обох рядках однакові.

2. Більше нуля (> 0)

Значення більше нуля повертається, коли перший невідповідний символ у first_str має більше значення ASCII ніж відповідний символ у second_str або ми також можемо сказати, що якщо символ у first_str лексикографічно стоїть після символу second_str, тоді повертається нуль.

3. Менше нуля (<0)

Значення менше нуля повертається, коли перший невідповідний символ у first_str має менше значення ASCII ніж відповідний символ у second_str . Ми також можемо сказати, що якщо символ у first_str лексикографічно передує символу second_str, повертається нуль.



Щоб дізнатися більше про значення ASCII, зверніться до цієї статті – Таблиця ASCII

Як використовувати функцію strcmp() у C

У наступному прикладі показано, як використовувати функцію strcmp() у C:

C




// C Program to Demonstrate the use of strcmp() function> #include> #include> int> main()> {> >// declaring two same string> >char>* first_str =>'Geeks'>;> >char>* second_str =>'Geeks'>;> >// printing the strings> >printf>(>'First String: %s '>, first_str);> >printf>(>'Second String: %s '>, second_str);> >// printing the return value of the strcmp()> >printf>(>'Return value of strcmp(): %d'>,> >strcmp>(first_str, second_str));> >return> 0;> }>

рядок java indexof
>

рядок внутр
>

Вихід

First String: Geeks Second String: Geeks Return value of strcmp(): 0>

Як працює strcmp() у C?

Функція C strcmp() працює шляхом порівняння два рядки лексикографічно . Це означає, що він порівнює значення ASCII кожного символу, поки не буде знайдено невідповідне значення або символ NULL. Роботу функції C strcmp() можна описати так:

1. Починається з порівняння значень ASCII перших символів обох рядків.

2. Якщо перші символи в обох рядках рівні, тоді ця функція перевірить другий символ, якщо вони також рівні, тоді вона перевірить третій і так далі, доки не буде знайдено перший невідповідний символ або символ NULL.

3. Якщо Знайдено символ NULL , функція повертає нуль оскільки обидва рядки будуть однаковими.

strcmp з нулем як значення, що повертається

4. Якщо знайдено невідповідний символ,

  • Якщо значення ASCII символу першого рядка більше, ніж значення другого рядка, то позитивна різниця ( > 0 ) між їхніми значеннями ASCII повертається.
strcmp із додатним значенням, що повертається
  • Якщо значення ASCII символу першого рядка менше, ніж значення другого рядка, тоді від’ємна різниця ( < 0 ) між їхніми значеннями ASCII повертається.
strcmp із від’ємним значенням, що повертається

Усі ці три випадки продемонстровано в наведених нижче прикладах.

Приклади strcmp() у C

Приклад 1. Поведінка strcmp() для ідентичних рядків

Ця програма ілюструє поведінку функції strcmp() для ідентичних рядків.

C




// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> > >char> first_str[] =>'g f g'>;> >char> second_str[] =>'g f g'>;> > >// Using strcmp()> >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>' Value returned by strcmp() is: %d'> , res);> >return> 0;> }>

>

>

Вихід

Strings are equal Value returned by strcmp() is: 0>

Приклад 2. Поведінка strcmp() для лексикографічно більшого першого рядка

Наведений нижче приклад демонструє поведінку функції strcmp() для лексикографічного більшого першого рядка.

C




// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> >// z has greater ASCII value than g> >char> first_str[] =>'zfz'>;> >char> second_str[] =>'gfg'>;> > >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>' Value of result: %d'> , res);> > >return> 0;> }>

>

>

шаблони програмування java
Вихід

Strings are unequal Value of result: 19>

Приклад 3. Поведінка strcmp() для лексикографічно меншого першого рядка.

Наведений нижче приклад демонструє поведінку функції strcmp() для лексикографічно меншого першого рядка.

C




// C program to illustrate> // strcmp() function> #include> #include> int> main()> {> >// b has less ASCII value than g> >char> first_str[] =>'bfb'>;> >char> second_str[] =>'gfg'>;> > >int> res =>strcmp>(first_str, second_str);> > >if> (res==0)> >printf>(>'Strings are equal'>);> >else> >printf>(>'Strings are unequal'>);> > >printf>(>' Value returned by strcmp() is: %d'> , res);> > > >return> 0;> }>

>

>

Вихід

архітектура пружинного завантаження
Strings are unequal Value returned by strcmp() is: -5>

Висновок

У цій статті ми обговорили Функція стандартної бібліотеки C strcmp() який використовується для лексикографічного порівняння двох рядків. Стандартна бібліотека містить деякі корисні та часто використовувані функції, які полегшують програмування, оскільки вони допомагають уникнути переписування часто використовуваних функцій знову і знову, коли це необхідно.

Поширені запитання щодо strcmp() у C

1. Як ми можемо порівняти два рядки в C?

років: Ми можемо використовувати функцію strcmp(), яка визначена у файлі заголовка, щоб лексикографічно порівняти два рядки (масив символів).

2. Який прототип функції strcmp() у C?

років: Прототип функції strcmp() виглядає наступним чином:

int strcmp(const char* lhs , const char* rhs );>

3. Коли функція strcmp() повертає нуль?

років: Функція strcmp() повертає нуль, якщо два рядки ідентичні.

4. Що означає позитивне значення, яке повертає функція strcmp()?

років: Функція strcmp() повертає додатне значення, якщо перший рядок лексикографічно більший за другий рядок.

5. Що означає від’ємне значення, яке повертає функція strcmp()?

років: Від’ємне значення, яке повертає функція strcmp(), означає, що перший рядок лексикографічно менший за другий рядок.

6. Як функція strcmp() порівнює два рядки в C?

років: Функція strcmp() порівнює значення ASCII кожного символу двох рядків, доки не буде знайдено невідповідний символ або символ NULL.

7. Чи можна використовувати функцію strcmp() для порівняння нерядкових типів даних у C?

років: Ні, функція strcmp() не може порівнювати нерядкові типи даних у C. Вона може порівнювати лише змінний або незмінний рядковий тип даних, що завершується символом NULL.

Схожі статті:

  • Рядки на C
  • Зазвичай використовувані рядкові функції в C/C++ із прикладами