Namespaces
Variants

strncmp

From cppreference.net
< c ‎ | string ‎ | byte
Определено в заголовочном файле <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