Namespaces
Variants

strcmp

From cppreference.net
< c ‎ | string ‎ | byte
Определено в заголовочном файле <string.h>
int strcmp ( const char * lhs, const char * rhs ) ;

Сравнивает две строки байтов с нулевым завершением лексикографически.

Знак результата — это знак разницы между значениями первой пары символов (оба интерпретируются как unsigned char ), которые различаются в сравниваемых строках.

Поведение не определено, если lhs или rhs не являются указателями на байтовые строки с нулевым завершением.

Содержание

Параметры

lhs, rhs - указатели на сравниваемые нуль-терминированные байтовые строки

Возвращаемое значение

Отрицательное значение, если lhs появляется перед rhs в лексикографическом порядке.

Ноль, если lhs и rhs равны при сравнении.

Положительное значение, если lhs появляется после rhs в лексикографическом порядке.

Примечания

Эта функция не зависит от локали, в отличие от strcoll и strxfrm .

Пример

#include <stdio.h>
#include <string.h>
void demo(const char* lhs, const char* rhs)
{
    const int rc = strcmp(lhs, rhs);
    const char* rel = rc < 0 ? "precedes" : rc > 0 ? "follows" : "equals";
    printf("[%s] %s [%s]\n", lhs, rel, rhs);
}
int main(void)
{
    const char* string = "Hello World!";
    demo(string, "Hello!");
    demo(string, "Hello");
    demo(string, "Hello there");
    demo("Hello, everybody!" + 12, "Hello, somebody!" + 11);
}

Вывод:

[Hello World!] precedes [Hello!]
[Hello World!] follows [Hello]
[Hello World!] precedes [Hello there]
[body!] equals [body!]

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
  • 7.24.4.2 Функция strcmp (стр: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.24.4.2 Функция strcmp (стр.: TBD)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.24.4.2 Функция strcmp (стр: 365-366)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.21.4.2 Функция strcmp (стр: 328-329)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
  • 4.11.4.2 Функция strcmp

Смотрите также

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