Share via


strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

使用当前区域设置或指定的区域设置,比较两个字符串字符。

重要

_mbsncmp 和 _mbsncmp_l 不能在运行时的窗口执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW

int strncmp(
   const char *string1,
   const char *string2,
   size_t count 
);
int wcsncmp(
   const wchar_t *string1,
   const wchar_t *string2,
   size_t count 
);
int _mbsncmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count 
);
int _mbsncmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count, 
   _locale_t locale
);int _mbsnbcmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count 
);

参数

  • string1, string2
    比较的字符串。

  • count
    比较的字符数。

  • locale
    使用的区域设置。

返回值

返回值如下指示 string1 和 string2 子字符串的关系。

返回值

描述

< 0

string1 子字符串小于 string2 子字符串

0

string1 子字符串与 string2 子字符串

> 0

string1 子字符串大于 string2 子字符串

在错误,_mbsncmp返回 _NLSCMPERROR,在 STRING.H 和 MBSTRING.H. 定义。

备注

strncmp 功能字典地比较,至多,在 string1 的第一 count 字符和 string2 并返回指示子字符串值之间的关系。 strncmp 是 _strnicmp的一个区分大小写的版本。wcsncmp 和 _mbsncmp 是 _wcsnicmp 和 _mbsnicmp中区分大小写的版本。

wcsncmp 和 _mbsncmp 是 strncmp的宽字符和多字节字符版本。 参数和返回 wcsncmp 的值是宽字符字符串;这些 _mbsncmp 的多字节字符字符串。 _mbsncmp 基于多字节代码页识别多字节字符序列并返回该错误的 _NLSCMPERROR。

此外,_mbsncmp 验证其参数。 如果 string1 或 string2 是 null 指针,无效参数调用处理程序,如 参数验证 所述。 如果执行允许继续,_mbsncmp 返回 _NLSCMPERROR 并将 errno 到 EINVAL。 strncmp 和 wcsncmp 不验证方法的参数。 这三个功能否则具有相同的行为。

输出值受设置 LC_CTYPE 类设置的影响区域设置;请参见 setlocale 有关更多信息。 这些功能的版本不 _l 后缀为该区域设置相关的行为使用当前区域设置;与 _l 后缀的版本相同,只不过它们使用传入的区域设置参数。 有关更多信息,请参见区域设置

一般文本例程映射

TCHAR.H 实例

未定义的_UNICODE & _MBCS

定义的_MBCS

定义的_UNICODE

_tcsnccmp

strncmp

_mbsncmp

wcsncmp

_tcsncmp

strncmp

_mbsnbcmp

wcsncmp

_tccmp

对宏或内联函数的映射

_mbsncmp

对宏或内联函数的映射

_mbsncmp_l

要求

实例

必需的标头

strncmp

<string.h>

wcsncmp

<string.h> 或 <wchar.h>

_mbsncmp, _mbsncmp_l

<mbstring.h>

有关其他的兼容性信息,请参见中介绍的 兼容性

示例

// crt_strncmp.c
#include <string.h>
#include <stdio.h>

char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";

int main( void )
{
   char tmp[20];
   int result;
   printf( "Compare strings:\n      %s\n      %s\n\n",
           string1, string2 );
   printf( "Function:   strncmp (first 10 characters only)\n" );
   result = strncmp( string1, string2 , 10 );
   if( result > 0 )
      strcpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, sizeof(tmp), "less than" );
   else
      strcpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:      String 1 is %s string 2\n\n", tmp );
   printf( "Function:   strnicmp _strnicmp (first 10 characters only)\n" );
   result = _strnicmp( string1, string2, 10 );
   if( result > 0 )
      strcpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, sizeof(tmp), "less than" );
   else
      strcpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:      String 1 is %s string 2\n", tmp );
}
  

.NET Framework 等效项

System::String::Compare

请参见

参考

字符串操作(crt)

区域设置

多字节字符序列的说明

_mbsnbcmp, _mbsnbcmp_l

_mbsnbicmp, _mbsnbicmp_l

strcmp, wcscmp, _mbscmp

strcoll功能

_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l