次の方法で共有


strcmp、wcscmp、_mbscmp

文字列を比較します。

重要 : 重要

_mbscmp は Windows ランタイムで実行されるアプリケーションで使用することはできません。詳細については、でサポート /ZW CRT 関数" "を参照してください。

int strcmp(
   const char *string1,
   const char *string2 
);
int wcscmp(
   const wchar_t *string1,
   const wchar_t *string2 
);
int _mbscmp(
   const unsigned char *string1,
   const unsigned char *string2 
);

パラメーター

  • string1, string2
    比較する、NULL で終わる文字列。

戻り値

これらの各関数の戻り値は string2に string1 の辞書式の関係を示します。

価値

string1 が string2 の関係

< 0

string1 は string2未満です

0

string1 は string2と同じです。

> 0

string1 は string2 より大

STRING.H と MBSTRING.H.で定義されるエラーで、_mbscmp は _NLSCMPERRORを返します。

解説

strcmp 関数は string1 と string2 を辞書式に比較し、その関係を示す値を返します。wcscmp と _mbscmp は、strcmp、それぞれのワイド文字バージョンとマルチバイト文字バージョンです。_mbscmp は、現在のマルチバイト コード ページに従ってマルチバイト文字シーケンスを認識し、エラーの _NLSCMPERROR を返します。詳細については、「コード ページ」を参照してください。また string1string2 またはが null ポインターの場合、_mbscmp は パラメーターの検証に説明されているように、無効なパラメーター ハンドラーが実行されます。実行の継続が許可された場合、_mbscmp は _NLSCMPERROR を返し、errno を EINVAL に設定します。strcmp および wcscmp は、パラメーターを検証しません。それ以外では、これらの関数の動作は同じです。

汎用テキスト ルーチンのマップ

TCHAR.H のルーチン

_UNICODE および _MBCS が未定義の場合

_MBCS が定義されている場合

_UNICODE が定義されている場合

_tcscmp

strcmp

_mbscmp

wcscmp

strcmp 関数は strcoll 関数と strcoll の比較方法は現在のロケールの LC_COLLATE のカテゴリ別に決定されます。strcmp の比較がロケールによって影響を受けないことは異なります。LC_COLLATE のカテゴリの詳細については、setlocale、_wsetlocaleを参照してください。

15 "B" ロケールでは、文字セット (ASCII 文字セット) の文字の順序が辞書式の順序と同じです。ただし、他のロケールでは、文字セットの文字の順序が辞書式の順序と異なる場合があります。たとえば、特定のヨーロッパのロケールでは、文字 "a" (値 0x61) 文字セットの文字 "ä" (値 0xE4)、文字 "ä" に辞書式に直前の文字 "a" に指定されます。

文字セットと辞書式の順序と異なるロケールでは、現在のロケールの LC_COLLATE のカテゴリの設定に従って文字列の辞書式の比較の場合 strcmp ではなく strcoll を使用します。上の例のロケールの辞書式の比較を実行するには、strcmpではなく strcoll を使用します。また、元の文字列の strxfrm を使用して、結果の文字列の strcmp を使用します。

_stricmp、_wcsicmpと _mbsicmp は小文字のフォームに最初にそれらを変換して文字列を比較します。2 個の 18 "Z" と ASCII の表の "a" の間にケースで ( "["、'\'、"]"、'^'、'_'と '`'異なる動作を比較します)、ある文字を含む文字列。たとえば、比較で大文字小文字が比較の場合 ("abcde" > "abcd^") およびそのほかの方法 ("ABCDE" < "ABCD^") の場合、2 文字列 "ABCDE" と "ABCD^" は、1 種類の方法を比較します。

必要条件

ルーチン

必須ヘッダー

strcmp

<string.h>

wcscmp

<string.h> または <wchar.h>

_mbscmp

<mbstring.h>

追加の互換性の詳細については、互換性を参照してください。

ライブラリ

C ランタイム ライブラリのすべてのバージョン。

使用例

// crt_strcmp.c

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";

int main( void )
{
   char tmp[20];
   int result;

   // Case sensitive
   printf( "Compare strings:\n   %s\n   %s\n\n", string1, string2 );
   result = strcmp( string1, string2 );
   if( result > 0 )
      strcpy_s( tmp, _countof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, _countof (tmp), "less than" );
   else
      strcpy_s( tmp, _countof (tmp), "equal to" );
   printf( "   strcmp:   String 1 is %s string 2\n", tmp );

   // Case insensitive (could use equivalent _stricmp)
   result = _stricmp( string1, string2 );
   if( result > 0 )
      strcpy_s( tmp, _countof (tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, _countof (tmp), "less than" );
   else
      strcpy_s( tmp, _countof (tmp), "equal to" );
   printf( "   _stricmp:  String 1 is %s string 2\n", tmp );
}
  

同等の .NET Framework 関数

System::String::CompareOrdinal

参照

関連項目

文字列操作 (CRT)

memcmp、wmemcmp

_memicmp、_memicmp_l

strcoll 系関数

_stricmp、_wcsicmp、_mbsicmp、_stricmp_l、_wcsicmp_l、_mbsicmp_l

strncmp、wcsncmp、_mbsncmp、_mbsncmp_l

_strnicmp、_wcsnicmp、_mbsnicmp、_strnicmp_l、_wcsnicmp_l、_mbsnicmp_l

strrchr、wcsrchr、_mbsrchr、_mbsrchr_l

strspn、wcsspn、_mbsspn、_mbsspn_l

strxfrm、wcsxfrm、_strxfrm_l、_wcsxfrm_l