wcsncmp
wcsncmp
在头文件 | | |
---|---|---|
int wcsncmp(const wchar_t * lhs,const wchar_t * rhs,size_t count); | | (自C95以来) |
比较count
两个以null结尾的宽字符串的最宽字符。比较按字典顺序完成。
结果的符号是所比较的字符串中第一对宽字符值不同的标志。
如果lhs
或rhs
不是指向以空字符结尾的字符串的指针,行为是未定义的。
参数
lhs,rhs | - | 指向以空字符结尾的宽字符串进行比较的指针 |
---|---|---|
计数 | - | 最大数量的字符进行比较 |
返回值
如果以字典顺序lhs
出现,则为负值rhs
。
零如果lhs
和rhs
比较相等。
如果按字典顺序lhs
出现,则为正值rhs
。
注意
与函数不同wcscoll
,此函数不区分语言环境wcsxfrm
。
示例
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
void demo(const wchar_t *lhs, const wchar_t *rhs, int sz)
{
int rc = wcsncmp(lhs, rhs, sz
if(rc == 0)
printf("First %d characters of [%ls] equal [%ls]\n", sz, lhs, rhs
else if(rc < 0)
printf("First %d characters of [%ls] precede [%ls]\n", sz, lhs, rhs
else if(rc > 0)
printf("First %d characters of [%ls] follow [%ls]\n", sz, lhs, rhs
}
int main(void)
{
const wchar_t *str1 = L"안녕하세요";
const wchar_t *str2 = L"안녕히 가십시오";
setlocale(LC_ALL, "en_US.utf8"
demo(str1, str2, 5
demo(str2, str1, 8
demo(str1, str2, 2
}
输出:
First 5 characters of [안녕하세요] precede [안녕히 가십시오]
First 8 characters of [안녕히 가십시오] follow [안녕하세요]
First 2 characters of [안녕하세요] equal [안녕히 가십시오]
参考
- C11标准(ISO/IEC 9899:2011):
另请参阅
wcscmp(C95) | 比较两个宽字符串(函数) |
---|---|
wmemcmp(C95) | 比较两个数组中的一定数量的宽字符(函数) |
wcscoll(C95) | 根据当前语言环境(函数)比较两个宽字符串 |
| 针对wcsncmp |的C ++文档