strncmp
Определено в заголовочном файле <string.h> | ||
|---|---|---|
int strncmp( const char* lhs, const char* rhs, size_t count ); |
Сравнивает не более count символов двух, возможно, завершённых нулём, массивов. Сравнение выполняется лексикографически. Символы после символа нуль не сравниваются.
Знак результата — знак разницы между значениями первой пары символов (оба интерпретируются как unsigned char), которые различаются в сравниваемых массивах.
Поведение не определено, когда доступ выходит за пределы любого массива lhs или rhs. Поведение не определено, когда любой из lhs или rhs является указателем на ноль.
Параметры
| lhs, rhs | - | указатели на, возможно, завершённые нулём, массивы для сравнения |
| count | - | максимальное число символов для сравнения |
Возвращаемое значение
Отрицательное значение, если lhs предшествует rhs в лексикографическом порядке.
Ноль, если lhs и rhs равны при сравнении или если count равно нулю.
Положительное значение, если lhs следует за rhs в лексикографическом порядке.
Примечания
Эта функция нечувствительна к локали, в отличие от strcoll и strxfrm.
Пример
#include <stdio.h>
#include <string.h>
void demo(const char* lhs, const char* rhs, int sz)
{
const int rc = strncmp(lhs, rhs, sz);
if (rc < 0)
printf("First %d chars of [%s] precede [%s]\n", sz, lhs, rhs);
else if (rc > 0)
printf("First %d chars of [%s] follow [%s]\n", sz, lhs, rhs);
else
printf("First %d chars of [%s] equal [%s]\n", sz, lhs, rhs);
}
int main(void)
{
const char* string = "Hello World!";
demo(string, "Hello!", 5);
demo(string, "Hello", 10);
demo(string, "Hello there", 10);
demo("Hello, everybody!" + 12, "Hello, somebody!" + 11, 5);
}Вывод:
First 5 chars of [Hello World!] equal [Hello!] First 10 chars of [Hello World!] follow [Hello] First 10 chars of [Hello World!] precede [Hello there] First 5 chars of [body!] equal [body!]
Ссылки
- Стандарт C23 (ISO/IEC 9899:2023):
- 7.24.4.4 Функция strncmp (p: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.24.4.4 Функция strncmp (p: TBD)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.24.4.4 Функция strncmp (p: 366)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.21.4.4 Функция strncmp (p: 329)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.11.4.4 Функция strncmp
См. также
| сравнивает две строки (функция) |
|
|
(C95) | сравнивает определенное количество символов из двух широких строк (функция) |
| сравнивает два буфера (функция) |
|
| сравнивает две строки в соответствии с текущей локалью (функция) |
|
Документация C++ для strncmp |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/string/byte/strncmp