%>
比较两个多字节字符字符串的前 n 个字节。
重要
此 API 不能用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数。
语法
int _mbsnbcmp(
const unsigned char *string1,
const unsigned char *string2,
size_t count
);
int _mbsnbcmp_l(
const unsigned char *string1,
const unsigned char *string2,
size_t count,
_locale_t locale
);
参数
%>
要比较的字符串。
count
要比较的字节数。
locale
要使用的区域设置。
返回值
返回值指示 string1
和 string2
的子字符串之间的序号关系。
返回值 | 说明 |
---|---|
< 0 | string1 子字符串小于 string2 子字符串。 |
0 | string1 子字符串等于 string2 子字符串。 |
> 0 | string1 子字符串大于 string2 子字符串。 |
参数验证错误时,_mbsnbcmp
和 _mbsnbcmp_l
返回 _NLSCMPERROR
,该返回值是在 <string.h> 和 <mbstring.h> 中定义的。
注解
_mbsnbcmp
函数最多比较 count
和 string1
的前 string2
个字节,并返回一个指示子字符串之间关系的值。 _mbsnbcmp
是 _mbsnbicmp
的区分大小写版本。 不同于 _mbsnbcoll
,_mbsnbcmp
不受区域设置的排序规则顺序影响。 _mbsnbcmp
根据当前的多字节代码页识别多字节字符序列。
_mbsnbcmp
类似于 _mbsncmp
,只不过 _mbsncmp
按字符(而不是按字节)对字符串进行比较。
输出值受区域设置的 LC_CTYPE
类别设置影响,它指定多字节字符的前导字节和尾随字节。 有关详细信息,请参阅 setlocale
。 _mbsnbcmp
函数对与区域设置相关的行为使用当前区域设置。 _mbsnbcmp_l
函数完全相同,只不过它转而使用 locale
参数。 有关详细信息,请参阅 Locale。
如果 string1
或 string2
是 null 指针,则这些函数将调用无效的参数处理程序,如参数验证中所述。 如果允许执行继续,则函数将返回 _NLSCMPERROR
并将 errno
设置为 EINVAL
。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
一般文本例程映射
Tchar.h 例程 | _UNICODE 和 _MBCS 未定义 |
_MBCS 已定义 |
_UNICODE 已定义 |
---|---|---|---|
_tcsncmp |
strncmp |
_mbsnbcmp |
wcsncmp |
_tcsncmp_l |
strncmp |
_mbsnbcml |
wcsncmp |
要求
例程 | 必需的标头 |
---|---|
_mbsnbcmp |
<mbstring.h> |
_mbsnbcmp_l |
<mbstring.h> |
有关兼容性的详细信息,请参阅 兼容性。
示例
// crt_mbsnbcmp.c
#include <mbstring.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", string1 );
printf( " %s\n\n", string2 );
printf( "Function: _mbsnbcmp (first 10 characters only)\n" );
result = _mbsncmp( string1, string2 , 10 );
if( result > 0 )
_mbscpy_s( tmp, sizeof(tmp), "greater than" );
else if( result < 0 )
_mbscpy_s( tmp, sizeof(tmp), "less than" );
else
_mbscpy_s( tmp, sizeof(tmp), "equal to" );
printf( "Result: String 1 is %s string 2\n\n", tmp );
printf( "Function: _mbsnicmp _mbsnicmp (first 10 characters only)\n" );
result = _mbsnicmp( string1, string2, 10 );
if( result > 0 )
_mbscpy_s( tmp, sizeof(tmp), "greater than" );
else if( result < 0 )
_mbscpy_s( tmp, sizeof(tmp), "less than" );
else
_mbscpy_s( tmp, sizeof(tmp), "equal to" );
printf( "Result: String 1 is %s string 2\n\n", tmp );
}
输出
Compare strings:
The quick brown dog jumps over the lazy fox
The QUICK brown fox jumps over the lazy dog
Function: _mbsnbcmp (first 10 characters only)
Result: String 1 is greater than string 2
Function: _mbsnicmp _mbsnicmp (first 10 characters only)
Result: String 1 is equal to string 2
另请参阅
字符串操作
%>
%>
区域设置
多字节字符序列的解释