头文件:#include <string.h>
strcoll() 函数根据环境变量LC_COLLATE来比较字符串,其原型为:
int strcoll( const char * str1, const char * str2 );
【参数说明】str1、str2 是要进行比较的两个字符串。
函数说明:strcoll() 会依环境变量 LC_COLLATE 所指定的文字排列次序来比较 s1 和 s2 字符串。
默认情况下,LC_COLLATE 为"POSIX"或"C",strcoll() 和 strcmp() 一样根据ASCII比较字符串大小。
对于设置了 LC_COLLATE 语言环境的情况下,则根据 LC_COLLATE 设置的语言排序方式进行比较。例如,汉字会根据拼音进行比较。
【返回值】若字符串 str1 和 str2 相同则返回0。若 str1 大于 str2 则返回大于 0 的值,否则返回小于 0 的值。
#include <stdio.h>
#include <string.h>
int main () {
char str1[20];
char str2[20];
int result;
strcpy(str1, "HELLO");
strcpy(str2, "hello world!");
result = strcoll(str1, str2);
if(result > 0) {
printf("ASCII value of first unmatched character of str1 is greater than str2");
} else if(result < 0) {
printf("ASCII value of first unmatched character of str1 is less than str2");
} else {
printf("Both the strings str1 and str2 are equal");
}
return 0;
}
输出:
在这个例子中,我们比较两个不同的字符串。strcoll()函数区分大小写。 'H'的 ASCII 值小于'h',这就是此函数返回负值的原因。
如果我们反转strcoll()函数中的参数,让我们说strcoll(str2, str1),那么函数将返回一个正值。