Spec-Zone.ru › C

strcmp

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

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

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

Поведение не определено, если 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

См. также

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

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

Spec-Zone.ru

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