strcmp
Defined in header <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 <string.h>
#include <stdio.h>
void demo(const char* lhs, const char* rhs)
{
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!]
Ссылки
- Стандарт 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/w/c/string/byte/strcmp