非常教程

C参考手册

字符串 | Strings

strcoll

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

int strcoll(const char * lhs,const char * rhs);

根据LC_COLLATE类别定义的当前语言环境比较两个以null结尾的字节字符串。

参数

lhs,rhs

-

指向以空字符结尾的字节字符串进行比较的指针

返回值

如果lhs小于(之前)rhs,则为负值。

如果lhs等于rhs,则返回0。

如果lhs大于(接下来)rhs,则为正值。

注意

整理顺序是字典顺序:字母表(其等价类)中字母的位置比其案例或变体具有更高的优先级。 在等价类中,小写字母在其大写等价和特定于语言环境的顺序可能适用于带有变音符的字符之前进行整理。 在某些语言环境中,字符组会作为单个归类单位进行比较。 例如,捷克语中的“ch”跟在“h”之后,在“i”之前,匈牙利语中的“dzs”跟在“dz”之后并且在“g”之前。

#include <stdio.h>
#include <string.h>
#include <locale.h>
 
int main(void)
{
    setlocale(LC_COLLATE, "cs_CZ.iso88592");
 
    const char* s1 = "hrnec";
    const char* s2 = "chrt";
 
    printf("In the Czech locale: ");
    if(strcoll(s1, s2) < 0)
         printf("%s before %s\n", s1, s2);
    else
         printf("%s before %s\n", s2, s1);
 
    printf("In lexicographical comparison: ");
    if(strcmp(s1, s2) < 0)
         printf("%s before %s\n", s1, s2);
    else
         printf("%s before %s\n", s2, s1);
}

输出:

In the Czech locale: hrnec before chrt
In lexicographical comparison: chrt before hrnec

参考

  • C11标准(ISO / IEC 9899:2011):
    • 7.24.4.3 strcoll函数(p:366)
  • C99标准(ISO / IEC 9899:1999):
    • 7.21.4.3 strcoll函数(p:329)
  • C89 / C90标准(ISO / IEC 9899:1990):
    • 4.11.4.3 strcoll函数

扩展内容

wcscoll(C95)

根据当前语言环境(函数)比较两个宽字符串

strxfrm

转换一个字符串,以便strcmp产生与strcoll(function)相同的结果

wcsxfrm(C95)

转换宽字符串以使wcscmp产生与wcscoll(函数)相同的结果

STRCMP

比较两个字符串(功能)

| strcoll的C ++文档 |

C

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