Compares two strings by locale-specific sorting criteria #include <string.h> int strcoll ( const char *s1 , const char *s2 ); Like strcmp( ), the strcoll( ) function performs a character-by-character comparison of the two strings, s1 and s2. However, where strcmp( ) just compares unsigned character values, strcoll( ) can apply a locale-specific set of rules in comparing strings. The value of the locale information category LC_COLLATE determines the applicable rule set, and can be changed by the setlocale( ) function. The return value of strcoll( ) indicates the result of the comparison as follows:
Examplechar *samples[ ] = { "curso", "churro" }; setlocale( LC_COLLATE, "es_US.UTF-8" ); int result = strcoll( samples[0], samples[1] ); if ( result == 0 ) printf( "The strings \"%s\" and \"%s\" are alphabetically equivalent.\n", samples[0], samples[1] ); else if ( result < 0 ) printf( "The string \"%s\" comes before \"%s\" alphabetically.\n", samples[0], samples[1] ); else if ( result > 0 ) printf( "The string \"%s\" comes after \"%s\" alphabetically.\n", samples[0], samples[1] ); Because the letter ch comes after the letter c in the Spanish alphabet, the preceding code prints this line in the es_US locale: The string "curso" comes before "churro" alphabetically. See Alsostrcmp( ), strncmp( ), setlocale( ), wcscoll( ), strxfrm( ) |