The strcmp() function in c
Содержание:
Возвращаемое значениеReturn Value
Отражает связь между подстроками указанным ниже образом.Indicates the relationship between the substrings, as follows.
Возвращаемое значениеReturn value | ОписаниеDescription |
---|---|
< 0< 0 | Строка строка1 меньше подстроки строка2 .string1 substring is less than string2 substring. |
Строка строка1 совпадает с подстрокой строка_замены .string1 substring is identical to string2 substring. | |
> 0> 0 | Строка строка1 больше, чем строка2 подстроки.string1 substring is greater than string2 substring. |
При ошибке проверки параметров эти функции возвращают _NLSCMPERROR, которая определена в <String. h> и <mbstring. h>.On a parameter validation error, these functions return _NLSCMPERROR, which is defined in <string.h> and <mbstring.h>.
Возвращаемое значениеReturn Value
Возвращает нуль в случае успеха или код ошибки в случае неудачи.Zero if successful; an error code on failure.
Ситуации, которые могут привести к ошибкеError Conditions
стрдестинатионstrDestination | numberOfElementsnumberOfElements | стрсаурцеstrSource | Возвращаемое значениеReturn value | Содержимое стрдестинатионContents of strDestination |
---|---|---|---|---|
Null или без завершенияNULL or unterminated | anyany | anyany | еинвалEINVAL | не измененоnot modified |
anyany | anyany | ЗАКАНЧИВАЮЩNULL | еинвалEINVAL | стрдестинатион имеет значение 0strDestination set to 0 |
anyany | 0 или слишком мал0, or too small | anyany | ERANGEERANGE | стрдестинатион имеет значение 0strDestination set to 0 |
Remarks
The strcmp function performs an ordinal comparison of string1 and string2 and returns a value that indicates their relationship. wcscmp and _mbscmp are, respectively, wide-character and multibyte-character versions of strcmp. _mbscmp recognizes multibyte-character sequences according to the current multibyte code page and returns _NLSCMPERROR on an error. _mbscmp_l has the same behavior, but uses the locale parameter that’s passed in instead of the current locale. For more information, see Code Pages. Also, if string1 or string2 is a null pointer, _mbscmp invokes the invalid parameter handler, as described in Parameter Validation. If execution is allowed to continue, _mbscmp and _mbscmp_l return _NLSCMPERROR and set errno to EINVAL. strcmp and wcscmp do not validate their parameters. These functions behave identically otherwise.
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 |
The strcmp functions differ from the strcoll functions in that strcmp comparisons are ordinal, and are not affected by locale. strcoll compares strings lexicographically by using the LC_COLLATE category of the current locale. For more information about the LC_COLLATE category, see setlocale, _wsetlocale.
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.
The strcmp functions are case-sensitive. _stricmp, _wcsicmp, and _mbsicmp compare strings by first converting them to their lowercase forms. Two strings that contain characters that are located between ‘Z’ and ‘a’ in the ASCII table (», ‘^’, ‘_’, and ‘`’) compare differently, depending on their case. For example, the two strings «ABCDE» and «ABCD^» compare one way if the comparison is lowercase («abcde» > «abcd^») and the other way («ABCDE» < «ABCD^») if the comparison is uppercase.
Возвращаемое значениеReturn Value
Возвращаемое значение для каждой из этих функций Указывает порядковое отношение строка1 к строка2.The return value for each of these functions indicates the ordinal relation of string1 to string2.
ПрименениеValue | Отношение string1 к string2Relationship of string1 to string2 |
---|---|
< 0< 0 | строка1 меньше, чем строка2string1 is less than string2 |
строка1 совпадает с строка2string1 is identical to string2 | |
> 0> 0 | строка1 больше, чем строка2string1 is greater than string2 |
При ошибке проверки параметров _mbscmp и _mbscmp_l возвращают _NLSCMPERROR, которые определены в <> String. h> и <mbstring. h.On a parameter validation error, _mbscmp and _mbscmp_l return _NLSCMPERROR, which is defined in <string.h> and <mbstring.h>.
Возвращаемое значениеReturn Value
Возвращаемое значение указывает связь подстрок строк строка1 и строка2 следующим образом.The return value indicates the relation of the substrings of string1 and string2 as follows.
Возвращаемое значениеReturn value | ОписаниеDescription |
---|---|
< 0< 0 | Строка строка1 меньше, чем строка2 подстрокиstring1 substring less than string2 substring |
Строка строка1 совпадает с подстрокой строка_заменыstring1 substring identical to string2 substring | |
> 0> 0 | Строка строка1 больше, чем строка2 подстрокиstring1 substring greater than string2 substring |
При ошибке проверки параметров _mbsncmp и _mbsncmp_l возвращают _NLSCMPERROR, которые определены в <> String. h> и <mbstring. h.On a parameter validation error, _mbsncmp and _mbsncmp_l return _NLSCMPERROR, which is defined in <string.h> and <mbstring.h>.
Возвращаемое значениеReturn Value
Возвращаемое значение указывает отношение строка1 к строка2 следующим образом.The return value indicates the relation of string1 to string2 as follows.
Возвращаемое значениеReturn value | ОписаниеDescription |
---|---|
< 0< 0 | строка1 меньше, чем строка2string1 less than string2 |
строка1 совпадает с строка2string1 identical to string2 | |
> 0> 0 | строка1 больше, чем строка2string1 greater than string2 |
При возникновении ошибки _mbsicmp возвращает _NLSCMPERROR, которая определена в <> String. h> <и Mbstring. h.On an error, _mbsicmp returns _NLSCMPERROR, which is defined in <string.h> and <mbstring.h>.
Описание
сравнивает и и возвращает (), если эти два идентичны и () в противном случае. Текст рассматривается идентичным, если размер и содержимое каждого являются тем же самым. Результат возврата имеет тип данных .
Входные параметры могут быть любой комбинацией строковых массивов, векторов символов и массивов ячеек из символьных векторов.
Примеры
Сравнение двух векторов символов
Скрипт Open Live Script
Сравните два различных вектора символов.
s1 = 'Yes'; s2 = 'No'; tf = strcmp(s1,s2)
tf = logical 0
возвращает , потому что и не равны.
Сравните два равных вектора символов.
s1 = 'Yes'; s2 = 'Yes'; tf = strcmp(s1,s2)
tf = logical 1
возвращает , потому что и равны.
Нахождение текста в массиве ячеек
Скрипт Open Live Script
Найдите слово в массиве ячеек из символьных векторов.
s1 = 'upon'; s2 = {'Once','upon'; 'a','time'}; tf = strcmp(s1,s2)
tf = 2x2 logical array 0 1 0 0
Существует только одно вхождение в массиве , и это происходит в элементе .
Сравнение двух Массивов ячеек из символьных векторов
Скрипт Open Live Script
Сравните каждый элемент в двух массивах ячеек из символьных векторов.
s1 = {'Time','flies','when'; 'you''re','having','fun.'}; s2 = {'Time','drags','when'; 'you''re','anxiously','waiting.'}; tf = strcmp(s1,s2)
tf = 2x3 logical array 1 0 1 1 0 0
Существует три экземпляра равных элементов в и . Это в индексах , в индексах и в индексах .
Сравнение массивов строк
Скрипт Open Live Script
Начиная в R2017a, можно создать строки с помощью двойных кавычек. Сравните строковые массивы с помощью .
s1 = ; s2 = ; tf = strcmp(s1,s2)
tf = 2x2 logical array 0 0 1 1
Можно соответствовать и строковые массивы вида операторам отношения, как вы можете с числовыми массивами.
Используйте , чтобы определить, какие элементы двух строковых массивов равны.
s1 == s2
ans = 2x2 logical array 0 0 1 1
Используйте , чтобы определить, какие элементы являются меньше, чем соответствующие элементы согласно лексикографическому порядку ASCII.
s1 < s2
ans = 2x2 logical array 1 1 0 0
Входные параметры
Введите текст, с каждым входом, заданным как вектор символов, символьный массив, массив ячеек из символьных векторов или массив строк. Порядок входных параметров не влияет на результаты сравнения.
-
Если и и являются строковыми массивами или массивами ячеек из символьных векторов, то и должны быть одного размера, если один из них не является скаляром.
-
Если и и являются символьными массивами с несколькими строками, то и могут иметь различные количества строк.
-
При сравнении нескалярного массива ячеек из символьных векторов или массива строк к многострочному символьному массиву, массив ячеек или массив строк должны быть вектор-столбцом с одинаковым числом строк как символьный массив.
Типы данных: | |
Выходные аргументы
Истинный или ложный результат | | логический массив
Истинный или ложный результат, возвращенный как или типа данных .
-
Если каждый вход является или скаляром строки, скалярной ячейкой или вектором символов, то является скаляром.
-
Если по крайней мере один вход является или массивом строк или массивом ячеек из символьных векторов, то является массивом тот же размер как входной массив.
-
Если один вход является символьным массивом с несколькими строками, и другой вход является или скалярной ячейкой или скаляром строки, то является -by- массив, где является количеством строк в символьном массиве.
-
Если оба входных параметров являются символьными массивами, является скаляром.
Советы
-
Функция предназначается для сравнения текста. Если используется на неподдерживаемых типах данных, всегда возвращает .
-
Для нечувствительного к регистру текстового сравнения используйте вместо .
-
Несмотря на то, что совместно использует имя с функцией C, он не следует соглашению языка C возврата , когда вводы текста соответствуют.
-
Со строковыми массивами можно использовать операторы отношения (, , , , , ) вместо . Можно выдержать сравнение и строковые массивы вида, как вы можете с числовыми массивами.
Расширенные возможности
Генерация кода C/C++Генерация кода C и C++ с помощью MATLAB Coder.
Указания и ограничения по применению:
-
Входные параметры перечисления не поддержаны.
-
Когда один вход является массивом ячеек, и другой вход является символьным массивом, символьный массив должен быть вектором — строкой времени компиляции.
-
Когда оба входных параметров являются пустыми символьными массивами, которые имеют различные размеры, сгенерированный код возвращает .
RemarksRemarks
Функция _strnicmp по порядковому номеру сравнивает не более первого символа подсчета строка1 и строка2.The _strnicmp function ordinally compares, at most, the first count characters of string1 and string2. Сравнение выполняется без учета регистра путем преобразования каждого символа в нижний регистр.The comparison is performed without regard to case by converting each character to lowercase. _strnicmp — это версия strncmpбез учета регистра._strnicmp is a case-insensitive version of strncmp. Сравнение завершается, если достигнут завершающий нуль-символ в любой строке до сравнения символов счетчика .The comparison ends if a terminating null character is reached in either string before count characters are compared. Если строки равны, когда завершающий нуль-символ достигается в любой строке до сравнения символов счетчика , более короткая строка меньше.If the strings are equal when a terminating null character is reached in either string before count characters are compared, the shorter string is lesser.
Символы от 91 до 96 в таблице ASCII (», ‘^’, » и ‘`’) оцениваются как меньшие по сравнению с любым алфавитным символом.The characters from 91 to 96 in the ASCII table (», ‘^’, », and ‘`’) evaluate as less than any alphabetic character. Этот порядок идентичен стрикмп.This ordering is identical to that of stricmp.
_wcsnicmp и _mbsnicmp — это версии _strnicmpдля расширенных символов и многобайтовых символов._wcsnicmp and _mbsnicmp are wide-character and multibyte-character versions of _strnicmp. Аргументы _wcsnicmp являются строками расширенных символов; _mbsnicmp являются строками многобайтовых символов.The arguments of _wcsnicmp are wide-character strings; those of _mbsnicmp are multibyte-character strings. _mbsnicmp распознает последовательности многобайтовых символов в соответствии с текущей многобайтовой кодовой страницей и возвращает _NLSCMPERROR об ошибке._mbsnicmp recognizes multibyte-character sequences according to the current multibyte code page and returns _NLSCMPERROR on an error. Дополнительные сведения см. в разделе Кодовые страницы.For more information, see Code Pages. В остальном эти три функции ведут себя идентично.These three functions behave identically otherwise. На эти функции влияет настройка языкового стандарта — версии без суффикса _l используют текущий языковой стандарт для поведения, зависящего от языкового стандарта. версии, в которых используется _l суффикс, вместо этого используют переданный языковой стандарт .These functions are affected by the locale setting—the versions that don’t have the _l suffix use the current locale for their locale-dependent behavior; the versions that do have the _l suffix instead use the locale that’s passed in. Для получения дополнительной информации см. Locale.For more information, see Locale.
Все эти функции проверяют свои параметры.All of these functions validate their parameters. Если либо строка1 , либо строка2 являются пустым указателем, вызывается обработчик недопустимых параметров, как описано в разделе Проверка параметров.If either string1 or string2 is a null pointer, the invalid parameter handler is invoked, as described in Parameter Validation. Если выполнение может быть продолжено, эти функции возвращают _NLSCMPERROR и присвойте параметру » еинвал» значение No .If execution is allowed to continue, these functions return _NLSCMPERROR and set errno to EINVAL.
По умолчанию глобальное состояние этой функции ограничивается приложением.By default, this function’s global state is scoped to the application. Чтобы изменить это, см. раздел глобальное состояние в CRT.To change this, see Global state in the CRT.
Универсальное текстовое сопоставление функцийGeneric-Text Routine Mappings
Подпрограмма TCHAR.HTCHAR.H routine | _UNICODE и _MBCS не определены_UNICODE & _MBCS not defined | _MBCS определено_MBCS defined | _UNICODE определено_UNICODE defined |
---|---|---|---|
_tcsncicmp_tcsncicmp | _strnicmp_strnicmp | _mbsnicmp_mbsnicmp | _wcsnicmp_wcsnicmp |
_tcsnicmp_tcsnicmp | _strnicmp_strnicmp | _mbsnbicmp_mbsnbicmp | _wcsnicmp_wcsnicmp |
_tcsncicmp_l_tcsncicmp_l | _strnicmp_l_strnicmp_l | _mbsnicmp_l_mbsnicmp_l | _wcsnicmp_l_wcsnicmp_l |