Функция strncmp
Функция strncmp сравнивает первые N символов двух C-строк (строк в стиле языка C, то есть массивов символов, заканчивающихся нулевым символом '\0'). В первый параметр мы передаем первую строку для сравнения, во второй - вторую строку, а в третий - максимальное количество символов, которое нужно сравнить. Функция возвращает 0, если первые N символов обеих строк равны, отрицательное число, если первая строка меньше второй, и положительное число, если первая строка больше второй.
Функция объявлена в заголовочном файле <cstring>. Сравнение выполняется до первого несовпадающего символа, до нулевого символа или до тех пор, пока не будет сравнено N символов. В отличие от функции strcmp, которая сравнивает строки целиком, strncmp позволяет ограничить количество сравниваемых символов.
Синтаксис
int strncmp(const char* str1, const char* str2, size_t num);
Пример
Давайте сравним первые 3 символа двух одинаковых строк:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const char* str1 = "abcde";
const char* str2 = "abcde";
int res = strncmp(str1, str2, 3);
cout << res << endl;
return 0;
}
Результат выполнения кода:
0
Пример
Давайте сравним первые 3 символа двух разных строк. Так как символ 'c' меньше символа 'x', функция вернет отрицательное число:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const char* str1 = "abcde";
const char* str2 = "abxde";
int res = strncmp(str1, str2, 3);
cout << res << endl;
return 0;
}
Результат выполнения кода:
-21
Пример
Давайте сравним только первые 2 символа строк, которые различаются начиная с третьего символа. Так как первые два символа совпадают, функция вернет 0:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
const char* str1 = "abcde";
const char* str2 = "abxde";
int res = strncmp(str1, str2, 2);
cout << res << endl;
return 0;
}
Результат выполнения кода:
0