C

wcsncmp

wcsncmp

在头文件中定义
int wcsncmp(const wchar_t * lhs,const wchar_t * rhs,size_t count);(自C95以来)

比较count两个以null结尾的宽字符串的最宽字符。比较按字典顺序完成。

结果的符号是所比较的字符串中第一对宽字符值不同的标志。

如果lhsrhs不是指向以空字符结尾的字符串的指针,行为是未定义的。

参数

lhs,rhs-指向以空字符结尾的宽字符串进行比较的指针
计数-最大数量的字符进行比较

返回值

如果以字典顺序lhs出现,则为负值rhs

零如果lhsrhs比较相等。

如果按字典顺序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 ++文档