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 等效项
请参见
参考
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l