非常教程

C参考手册

字符串 | Strings

wmemcmp

在头文件<wchar.h>中定义

int wmemcmp(const wchar_t * lhs,const wchar_t * rhs,size_t count);

(自C95以来)

比较countlhsand 指向的宽字符(或兼容整数类型)数组的第一个宽字符rhs。比较按字典顺序完成。

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

如果count为零,则该功能不执行任何操作。

参数

lhs,rhs

-

指向宽字符数组进行比较

计数

-

要检查的宽字符数

返回值

如果在第一不同宽字符的值的负值lhs小于相应的宽字符中的值rhslhsrhs在词典顺序。

​0​如果所有count宽字符lhsrhs相等。

如果在第一不同宽字符的值正值lhs是比相应的宽字符中的值大rhsrhslhs在词典顺序。

注意

这个函数不是区域敏感的,并且不关注wchar_t它检查的对象的值:空值和无效宽字符也被比较。

示例

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
 
void demo(const wchar_t* lhs, const wchar_t* rhs, size_t sz)
{
    for(size_t n = 0; n < sz; ++n) putwchar(lhs[n]);
    int rc = wmemcmp(lhs, rhs, sz);
    if(rc == 0)
        wprintf(L" compares equal to ");
    else if(rc < 0)
        wprintf(L" precedes ");
    else if(rc > 0)
        wprintf(L" follows ");
    for(size_t n = 0; n < sz; ++n) putwchar(rhs[n]);
    wprintf(L" in lexicographical order\n");
}
 
int main(void)
{
    setlocale(LC_ALL, "en_US.utf8");
 
    wchar_t a1[] = {L'α',L'β',L'γ'};
    wchar_t a2[] = {L'α',L'β',L'δ'};
 
    size_t sz = sizeof a1 / sizeof *a1;
    demo(a1, a2, sz);
    demo(a2, a1, sz);
    demo(a1, a1, sz);
}

输出:

αβγ precedes αβδ in lexicographical order
αβδ follows αβγ in lexicographical order
αβγ compares equal to αβγ in lexicographical order

参考

  • C11标准(ISO/IEC 9899:2011):
    • 7.29.4.4.5 wmemcmp函数(p: 435)
  • C99标准(ISO/IEC 9899:1999):
    • 7.24.4.4.5 wmemcmp函数(p: 381)

另请参阅

wcscmp(C95)

比较两个宽字符串(函数)

memcmp

比较两个缓冲区(功能)

wcsncmp(C95)

比较来自两个宽字符串(函数)的一定数量的字符

| C ++文档wmemcmp |

C

C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。