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:2024):
-
- 7.24.4.4 Функция strncmp (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.24.4.4 Функция strncmp (стр.: TBD)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.24.4.4 Функция strncmp (стр: 366)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.21.4.4 Функция strncmp (стр: 329)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
-
- 4.11.4.4 Функция strncmp
Смотрите также
|
сравнивает две строки
(функция) |
|
|
(C95)
|
сравнивает определённое количество символов из двух широких строк
(функция) |
|
сравнивает два буфера
(функция) |
|
|
сравнивает две строки в соответствии с текущей локалью
(функция) |
|
|
C++ documentation
для
strncmp
|
|