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

標準

標準/拡張機能 C/C++ 依存項目

ISO C
POSIX.1
XPG4
XPG4.2
C99
Single UNIX Specification、バージョン 3

両方  

形式

#include <string.h>

int strcoll(const char *string1, const char *string2);

機能説明

両方とも、現行ロケールの LC_COLLATE カテゴリーの情報に 応じて解釈される、string1 で示されるストリングと string2 で示されるストリングを比較します。

戻り値

strcoll() は、ストリング間の関係を示す、以下のような値を戻します。
意味
< 0
string1 で示されるストリングが、string2 で 示されるストリングより小さい。
= 0
string1 で示されるストリングが、string2 で 示されるストリングと等しい。
> 0
string1 で示されるストリングが、string2 で 示されるストリングより大きい。
注 :
  1. LC_COLLATE で指定された比較アルゴリズムを実行するために 、strcoll() 関数で追加のメモリーを割り振ることが必要になる 場合があります。メモリー要求が (malloc() により) 満たされない場合 、strcoll() は失敗します。
  2. ロケールで 2 バイト文字 (4 と指定された MB_CUR_MAX) がサポートされる場合には、strcoll() 関数により、マルチバイト 文字の妥当性検査が行われます (以前は、strcoll() 関数で ストリングの妥当性検査は行われませんでした)。ストリングに無効マルチバイト文字が含まれていると、strcoll() は失敗します。
  3. MB_CUR_MAX が 4 と指定されたが、charmap ファイル で DBCS 文字が指定されなかった場合には、DBCS 文字の照合は 1 バイト 文字の後で照合が行われます。

CELEBS37
⁄* CELEBS37                                      

   This example compares the two strings passed to main.                        
                                                                                
 *⁄                                                                             
#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] );
  }                                                                             
}                                                                               

出力

入力がストリング “firststring” および “secondstring” の場合、想定される出力は次のようになります。
"firststring" is less than "secondstring"

関連情報