Spec-Zone.ru › C

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

См. также

strcmp
сравнивает две строки
(функция)
wcsncmp
(C95)
сравнивает определенное количество символов из двух широких строк
(функция)
memcmp
сравнивает два буфера
(функция)
strcoll
сравнивает две строки в соответствии с текущей локалью
(функция)
Документация C++ для strncmp

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/string/byte/strncmp

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API