strcoll

From cppreference.com
< c‎ | string‎ | byte
Defined in header <string.h>
int strcoll( const char *lhs, const char *rhs );

Compares two null-terminated byte strings according to the current locale as defined by the LC_COLLATE category.

Contents

[edit] Parameters

lhs, rhs - pointers to the null-terminated byte strings to compare

[edit] Return value

Negative value if lhs is less than rhs.

0 if lhs is equal to rhs.

Positive value if lhs is greater than rhs.

[edit] Example

#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);
}

Output:

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

[edit] See also

compares two strings
(function)
compares a certain amount of characters of two strings
(function)
compares two buffers
(function)
C++ documentation for strcoll