strcmp, wcscmp, _mbscmp
Сравнение строк.
![]() |
---|
_mbscmp нельзя использовать в приложениях, выполняемых в Среда выполнения Windows.Дополнительные сведения см. в разделе Функции CRT не поддерживаются при /ZW. |
int strcmp(
const char *string1,
const char *string2
);
int wcscmp(
const wchar_t *string1,
const wchar_t *string2
);
int _mbscmp(
const unsigned char *string1,
const unsigned char *string2
);
Параметры
- string1, string2
Строки с завершающим нулем для сравнения.
Возвращаемое значение
Возвращаемое значение для каждой из этих функций отображает лексикографическую связь string1 значение string2.
Значение |
Связь string1 и string2 |
---|---|
< 0 |
string1, string2 |
0 |
идентично string1 на string2 |
> 0 |
Значение параметра string1 больше величины string2 |
При ошибке _mbscmp возвращает _NLSCMPERROR, которая определена в STRING.H и MBSTRING.H.
Заметки
Функция strcmp сравнивает string1 и string2 лексикографически и возвращает значение, которое указывает на их связи.wcscmp и _mbscmp соответственно, версии, юникод и многобайтовой кодировки strcmp._mbscmp распознает последовательности многобайтовых символов в соответствии с текущей многобайтовой кодовой страницей и возвращает _NLSCMPERROR при ошибке.Для получения дополнительной информации см. Кодовые страницы.Кроме того, если string1 или string2, то указатель _mbscmp вызывает обработчик недопустимого параметра, как описано в разделе Проверка параметров.Если среда выполнения может продолжить, то _mbscmp возвращает _NLSCMPERROR и задает для errno значение EINVAL.strcmp и wcscmp не проверяют свои параметры.В остальных случаях эти три функции ведут себя идентично.
Универсальное текстовое сопоставление функций
Функция TCHAR.H |
неопределенные _UNICODE & _MBCS |
определенные _MBCS |
Определение _UNICODE |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
Функции strcmp отличаются от функций strcoll тем, что сравнения strcmp не влияет на языкового стандарта, тогда как изображение сравнений strcoll определяется по категории LC_COLLATE текущего языкового стандарта.Дополнительные сведения о категории LC_COLLATE см. в разделе setlocale, _wsetlocale.
В языковом стандарте "C", порядок символов в кодировке (кодировке ASCII) совпадает с лексикографический порядок символов.Однако в других языковых стандартах, порядок символов в кодировке лексикографического может отличаться от порядка.Например, в некоторых европейских языковых стандартах, символ "a" (значение 0x61) предшествует символ "ä" (значение 0xE4) в кодировке, только ä" предшествует символ "символ "a" лексикографически.
Языковых стандартах, для которых кодировка и лексикографический порядок два символа, используйте strcoll вместо strcmp для лексикографического сравнения строк согласно параметру категории LC_COLLATE текущего языкового стандарта.Чтобы выполнить лексикографическое сравнение языкового стандарта в предыдущем примере, используйте strcoll вместо strcmp.Также можно использовать strxfrm в исходной строки, а затем использовать strcmp для результирующих строк.
_stricmp, _wcsicmp и _mbsicmp сравнивают строки сначала преобразовать их в их в нижнем регистре формы.2 Строки, содержащие символы, которые расположены между "Z" и "a" в таблице " [ASCII (", "]", '\', '^', '_'и '`') " по-разному, в зависимости от их варианта.Например, 2 строки "ABCDE" и "ABCD^" ", если один способ сравнения в нижнем регистре > ("abcde""abcd^") и другие способы, < ("ABCDE""ABCD^"), если сравнение прописными буквами.
Требования
Функция |
Требуемый заголовок |
---|---|
strcmp |
<string.h> |
wcscmp |
<string.h> или <wchar.h> |
_mbscmp |
<mbstring.h> |
Для дополнительных данных о совместимости см. в разделе Совместимость.
Библиотеки
Все версии Библиотек времени выполнения C.
Пример
// crt_strcmp.c
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";
int main( void )
{
char tmp[20];
int result;
// Case sensitive
printf( "Compare strings:\n %s\n %s\n\n", string1, string2 );
result = strcmp( string1, string2 );
if( result > 0 )
strcpy_s( tmp, _countof(tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, _countof (tmp), "less than" );
else
strcpy_s( tmp, _countof (tmp), "equal to" );
printf( " strcmp: String 1 is %s string 2\n", tmp );
// Case insensitive (could use equivalent _stricmp)
result = _stricmp( string1, string2 );
if( result > 0 )
strcpy_s( tmp, _countof (tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, _countof (tmp), "less than" );
else
strcpy_s( tmp, _countof (tmp), "equal to" );
printf( " _stricmp: String 1 is %s string 2\n", tmp );
}
Эквивалент в .NET Framework
System::String::CompareOrdinal
См. также
Ссылки
_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l