Name

strcoll

Synopsis

Compares two strings by locale-specific sorting criteria

#include <string.h>
intstrcoll( 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:

Zero

The two strings are equal.

Greater than zero

The string addressed by s1 is greater than the string addressed by s2.

Less than zero

The string addressed by s1 is less than the string addressed by s2.

Example

char *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.

Get C in a Nutshell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.