strcmp c что это
strcmp () в C / C ++
Синтаксис ::
В приведенном выше прототипе функция srtcmp принимает в качестве параметров две строки и возвращает целочисленное значение на основе сравнения строк.
Что возвращает strcmp ()?
Эта функция может возвращать три различных целочисленных значения на основе сравнения:
// C программа для иллюстрации
// функция strcmp ()
#include
#include
char leftStr[] = «g f g» ;
char rightStr[] = «g f g» ;
int res = strcmp (leftStr, rightStr);
printf ( «Strings are equal» );
printf ( «Strings are unequal» );
// C программа для иллюстрации
// функция strcmp ()
#include
#include
// z имеет большее значение ASCII, чем g
char rightStr[] = «gfg» ;
int res = strcmp (leftStr, rightStr);
printf ( «Strings are equal» );
printf ( «Strings are unequal» );
// C программа для иллюстрации
// функция strcmp ()
#include
#include
// b имеет меньшее значение ASCII, чем g
char rightStr[] = «gfg» ;
int res = strcmp (leftStr, rightStr);
printf ( «Strings are equal» );
printf ( «Strings are unequal» );
Важный момент: если строки не одинаковы, вы обнаружите, что значение, возвращаемое функцией strcmp (), является разницей между значениями ASCII первого несопоставленного символа в leftStr и rightStr в обоих случаях.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
_mbscmp и _mbscmp_l не могут использоваться в приложениях, выполняемых в среда выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Синтаксис
Параметры
locale
Используемый языковой стандарт.
Возвращаемое значение
Значение | Отношение типа string1 к string2 |
---|---|
string1 меньше string2 | |
0 | string1 идентичен string2 |
> 0 | string1 больше string2 |
Remarks
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это, см. раздел глобальное состояние в CRT.
Универсальное текстовое сопоставление функций
TCHAR.H ассемблер | _UNICODE & _MBCS не определено | _MBCS определяется | _UNICODE определяется |
---|---|---|---|
_tcscmp | strcmp | _mbscmp | wcscmp |
В языковом стандарте «C» порядок символов в наборе символов (набор символов ASCII) совпадает с лексикографическим порядком символов. Однако в других языковых стандартах порядок символов в наборе символов может отличаться от лексикографического порядка. Например, в некоторых европейских языковых стандартах символ » a » (значение 0x61) предшествует символу » ä » (значение 0xE4) в кодировке, но символ «» находится перед ä символом » a » лексикографически.
В языковых стандартах, где кодировка и порядок символов лексикографическим порядком различаются, можно использовать strcoll вместо strcmp для сравнения строк в лексикографическим порядком. Кроме того, можно использовать strxfrm для исходных строк, а затем использовать strcmp для результирующих строк.
Требования
Подпрограмма | Обязательный заголовок |
---|---|
strcmp | |
wcscmp | либо |
_mbscmp |
Дополнительные сведения о совместимости см. в статье Compatibility.
_mbscmp and _mbscmp_l cannot be used in applications that execute in the Windows Runtime. For more information, see CRT functions not supported in Universal Windows Platform apps.
Syntax
Parameters
locale
Locale to use.
Return Value
Value | Relationship of string1 to string2 |
---|---|
string1 is less than string2 | |
0 | string1 is identical to string2 |
> 0 | string1 is greater than string2 |
Remarks
By default, this function’s global state is scoped to the application. To change this, see Global state in the CRT.
Generic-Text Routine Mappings
TCHAR.H routine | _UNICODE & _MBCS not defined | _MBCS defined | _UNICODE defined |
---|---|---|---|
_tcscmp | strcmp | _mbscmp | wcscmp |
In the «C» locale, the order of characters in the character set (ASCII character set) is the same as the lexicographic character order. However, in other locales, the order of characters in the character set may differ from the lexicographic order. For example, in certain European locales, the character ‘ a ‘ (value 0x61) comes before the character ‘ Г¤ ‘ (value 0xE4) in the character set, but the character ‘ Г¤ ‘ comes in front of the character ‘ a ‘ lexicographically.
In locales for which the character set and the lexicographic character order differ, you can use strcoll instead of strcmp for lexicographic comparison of strings. Alternatively, you can use strxfrm on the original strings, and then use strcmp on the resulting strings.
Requirements
Routine | Required header |
---|---|
strcmp | |
wcscmp | or |
_mbscmp |
For additional compatibility information, see Compatibility.
Описание функций языка Си
All | _ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
strcmp – сравнение строк.
#include
int strcmp (const char *str1, const char *str2);
str1, str2 – указатели на сравниваемые строки.
0 – если сравниваемее строки идентичны.
Положительное число – если строки отличаются и код первого отличающегося символа в строке str1 больше кода символа на той же позиции в строке str2.
Отрицательное число – если строки отличаются и код первого отличающегося символа в строке str1 меньше кода символа на той же позиции в строке str2.
Функция побайтно сравнивает коды символов двух строк, на которые указывают аргументы функции. Сравнение продолжается до встречи первого отличающегося символа или пока не будут проверены все символы строк.
Если все символы строк совпали, то возвращается 0.
Если при сравнении встретились отличающиеся символы, то сравнение прекращается и возвращается отрицательное или положительное число, в зависимости от того больше или меньше код символа строки str1, кода символа строки str2 на той же позиции (см. возвращаемые значения).
Если строки разной длины, то возвращается положительное число, если строка str1 длиннее строки str2, или отрицательное число, если строка str2 длиннее строки str1.
В примере сравниваются две строки и результат сравнения выводится на экран.
Функции для работы со строками в C++
После того, как мы с вами познакомились со строками и символьными массивами в C++, рассмотрим самые распространённые функции для работы с ними. Урок будет полностью построен на практике. Мы будем писать собственные программы-аналоги для обработки строк и параллельно использовать стандартные функции библиотеки cstring ( string.h – в старых версиях). Так вы примерно будете себе представлять, как они устроены. К стандартным функциям библиотеки cstring относятся:
Это конечно не все функции, а только те, которые мы разберём в этой статье.
strlen() (от слова length – длина)
Наша программа, которая подсчитает количество символов в строке:
Так будет выглядеть код, с заменой нашего участка кода на функцию strlen() :
Результат будет и в первой программе и во второй аналогичен:
strcat() (от слова concatenation – соединение)
Программа, которая в конец одной строки, дописывает вторую строку. Другими словами – объединяет две строки.
Реализация объединения двух строк, используя стандартную функцию, заняла одну строчку кода в программе – 14-я строка.
На что следует обратить внимание и первом и во втором коде – размер первого символьного массива должен быть достаточным для помещения символов второго массива. Если размер окажется недостаточным – может произойти аварийное завершение программы, так как запись строки выйдет за пределы памяти, которую занимает первый массив. Например:
strcpy() (от слова copy – копирование)
Реализуем копирование одной строки и её вставку на место другой строки.