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
См. также
| сравнивает заданное количество символов двух строк (функция) |
|
|
(C95) | сравнивает две широкие строки (функция) |
| сравнивает два буфера (функция) |
|
| сравнивает две строки с учётом текущей локали (функция) |
|
Документация C++ для strcmp |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/string/byte/strcmp