strcoll() — ストリングの比較

形式

#include <string.h>
int strcoll(const char *string1, const char *string2);

言語レベル

ANSI

スレッド・セーフ

はい

ロケール依存

この関数の振る舞いは、現行ロケールの LC_COLLATE カテゴリーの影響を受ける可能性があります。 詳しくは、 CCSID とロケールについてを参照してください。

説明

strcoll() 関数は、プログラムのロケールで指定された照合シーケンスを使用して、2 つのストリングを比較します。

戻り値

strcoll() 関数は、以下に示すように、ストリング間の関係を示す値を戻します。
意味
0 より小さい値 string1 より小 string2
0 string1string2 と同等です
0 より大きい string1 より大 string2
strcoll() が正常に実行されなかった場合は、errno が変更されます。 errno の値は EINVAL に設定されます (string1 または string2 引数に、 現行ロケールで使用できない文字が含まれています)。

この例では、 strcoll()を使用して main() に渡される 2 つのストリングを比較します。
#include <stdio.h>
#include <string.h>
 
int main(int argc, char ** argv)
{
  int  result;
 
  if ( argc != 3 )
  {
    printf( "Usage: %s string1 string2\n", argv[0] );
  }
  else
  {
 
    result = strcoll( argv[1], argv[2] );
 
    if ( result == 0 )
      printf( "\"%s\" is identical to \"%s\"\n", argv[1], argv[2] );
    else if ( result < 0 )
      printf( "\"%s\" is less than \"%s\"\n", argv[1], argv[2] );
    else
      printf( "\"%s\" is greater than \"%s\"\n", argv[1], argv[2] );
  }
}
 
/******************  If the input is the strings  ***********************
****************  "firststring" and "secondstring",  ********************
******************  then the expected output is:  *****************
 
"firststring" is less than "secondstring"
*/

関連情報