Функция strcmp
Функция strcmp сравнивает две C-строки
(строки в стиле языка C, то есть массивы символов,
завершающиеся нулевым символом '\0') и возвращает
целое число, показывающее результат сравнения.
В первый параметр мы передаем первую строку,
а во второй - вторую строку. Сравнение происходит
посимвольно до первого несовпадающего символа
или до конца одной из строк.
Возвращаемое значение:
0 - если строки полностью совпадают.
Меньше 0 - если первая строка лексикографически
меньше второй (первый несовпадающий символ в первой
строке имеет меньшее значение).
Больше 0 - если первая строка лексикографически
больше второй (первый несовпадающий символ в первой
строке имеет большее значение).
Синтаксис
int strcmp(const char* str1, const char* str2);
Пример
Давайте сравним две одинаковые строки:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const char* str1 = "abcde";
const char* str2 = "abcde";
int res = strcmp(str1, str2);
cout << res << endl;
return 0;
}
Результат выполнения кода:
0
Пример
Давайте сравним строку "abc" со строкой
"abcde". Первая строка короче, поэтому она
лексикографически меньше:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const char* str1 = "abc";
const char* str2 = "abcde";
int res = strcmp(str1, str2);
cout << res << endl;
return 0;
}
Результат выполнения кода:
-100
Пример
Давайте сравним строку "abcde" со строкой
"abc". Первая строка длиннее, поэтому она
лексикографически больше:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const char* str1 = "abcde";
const char* str2 = "abc";
int res = strcmp(str1, str2);
cout << res << endl;
return 0;
}
Результат выполнения кода:
100
Пример
Давайте сравним строки, которые различаются
в первом же символе. Символ 'b' имеет
большее значение в таблице ASCII, чем 'a',
поэтому строка "bcde" больше:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const char* str1 = "abcde";
const char* str2 = "bcde";
int res = strcmp(str1, str2);
cout << res << endl;
return 0;
}
Результат выполнения кода:
-1
Пример
Давайте используем результат strcmp для
проверки равенства строк в условии:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const char* str1 = "12345";
const char* str2 = "12345";
if (strcmp(str1, str2) == 0) {
cout << "equal" << endl;
} else {
cout << "not equal" << endl;
}
return 0;
}
Результат выполнения кода:
"equal"