Share via


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
    比较的 null 终止的字符串。

返回值

这些功能中的返回值指示 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 是 null 指针,_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 通过首先将它们比较字符串转换为它们的小写形式。 两个包含字符" Z”和" a "之间”位于 ASCII 表的字符串 (“[”,'\',“]”,'^'、'_'和 '`') 基于它们的大小写不同地比较。 例如,两个字符串 "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

请参见

参考

字符串操作(crt)

memcmp, wmemcmp

_memicmp, _memicmp_l

strcoll功能

_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

strspn, wcsspn, _mbsspn, _mbsspn_l

strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l