strcmp、wcscmp、_mbscmp、_mbscmp_lstrcmp, wcscmp, _mbscmp, _mbscmp_l

文字列を比較します。Compare strings.


_mbscmp_mbscmp_l Windows ランタイムで実行するアプリケーションでは使用できません。_mbscmp and _mbscmp_l cannot be used in applications that execute in the Windows Runtime. 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。For more information, see CRT functions not supported in Universal Windows Platform apps.


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
int _mbscmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   _locale_t locale


string1, string2string1, string2
Null で終わる比較対象の文字列。Null-terminated strings to compare.

使用するロケール。Locale to use.

戻り値Return Value

これらの各関数の戻り値の序数に基づく関係を示すstring1string2します。The return value for each of these functions indicates the ordinal relation of string1 to string2.

[値]Value string1 と string2 との関係Relationship of string1 to string2
< 0< 0 string1がより小さいstring2string1 is less than string2
00 string1ヲェヒェケェ ・ string2string1 is identical to string2
> 0> 0 string1がより大きいstring2string1 is greater than string2

パラメーター検証エラー、 _mbscmp_mbscmp_l返すすると、定義されている<string.h > と<mbstring.h >。On a parameter validation error, _mbscmp and _mbscmp_l return _NLSCMPERROR, which is defined in <string.h> and <mbstring.h>.


Strcmp関数実行の序数に基づく比較string1string2の関係を示す値を返します。The strcmp function performs an ordinal comparison of string1 and string2 and returns a value that indicates their relationship. wcscmp_mbscmpは、それぞれ、ワイド文字とマルチバイト文字のバージョンのstrcmpします。wcscmp and _mbscmp are, respectively, wide-character and multibyte-character versions of strcmp. _mbscmp現在のマルチバイト コード ページに従ってマルチバイト文字シーケンスを認識し、返しますするとエラーが発生します。_mbscmp recognizes multibyte-character sequences according to the current multibyte code page and returns _NLSCMPERROR on an error. _mbscmp_l同じ動作ですが、現在のロケールの代わりに渡されるロケール パラメーターを使用します。_mbscmp_l has the same behavior, but uses the locale parameter that's passed in instead of the current locale. 詳細については、「コード ページ」をご覧ください。For more information, see Code Pages. また場合、 string1またはstring2 null ポインターの場合は、 _mbscmpで説明されているように、無効なパラメーター ハンドラーを呼び出しますパラメーターの検証.Also, if string1 or string2 is a null pointer, _mbscmp invokes the invalid parameter handler, as described in Parameter Validation. 続けるには、実行が許可された場合 _mbscmp_mbscmp_l返すすると設定とerrnoEINVAL.If execution is allowed to continue, _mbscmp and _mbscmp_l return _NLSCMPERROR and set errno to EINVAL. strcmpwcscmpパラメーターを検証できません。strcmp and wcscmp do not validate their parameters. それ以外では、これらの関数の動作は同じです。These functions behave identically otherwise.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tcscmp_tcscmp strcmpstrcmp _mbscmp_mbscmp wcscmpwcscmp

Strcmpとは異なり、 strcoll 系関数でstrcmp比較は序数に基づく、およびロケールの影響は受けません。The strcmp functions differ from the strcoll functions in that strcmp comparisons are ordinal, and are not affected by locale. strcoll 系を使用して文字列を辞書順比較、 LC_COLLATEの現在のロケールのカテゴリ。strcoll compares strings lexicographically by using the LC_COLLATE category of the current locale. 詳細については、 LC_COLLATEカテゴリを参照してくださいsetlocale、_wsetlocaleします。For more information about the LC_COLLATE category, see setlocale, _wsetlocale.

"C"ロケールでは、文字セット (ASCII 文字セット) 内の文字の順序は、辞書式文字順序と同じです。In the "C" locale, the order of characters in the character set (ASCII character set) is the same as the lexicographic character order. ただし、その他のロケールでは、文字セット内の文字の順序が辞書式順序と異なる場合があります。However, in other locales, the order of characters in the character set may differ from the lexicographic order. たとえば、ヨーロッパの一部のロケールでは、文字 'a' (値 0x61) は文字セットで文字 'ä' (値 0xE4) の前にありますが、辞書式の順序では文字 'ä' が文字 'a' の前にあります。For example, in certain European locales, the character 'a' (value 0x61) comes before the character 'ä' (value 0xE4) in the character set, but the character 'ä' comes in front of the character 'a' lexicographically.

対象の文字セットと辞書式文字順序が異なるロケールで使用することができますstrcoll 系の代わりにstrcmpの文字列の辞書式比較します。In locales for which the character set and the lexicographic character order differ, you can use strcoll instead of strcmp for lexicographic comparison of strings. また、使用することができますstrxfrmしを使用して、元の文字列でstrcmp結果の文字列にします。Alternatively, you can use strxfrm on the original strings, and then use strcmp on the resulting strings.

Strcmp関数は大文字小文字を区別します。The strcmp functions are case-sensitive. _stricmp_wcsicmp、および _mbsicmp最初に変換してに小文字の形式の文字列を比較します。_stricmp, _wcsicmp, and _mbsicmp compare strings by first converting them to their lowercase forms. 'Z' の間にある文字が含まれている 2 つの文字列と ASCII の表の 'a' ('['、'\'、']'、' ^'、'' と'`')、大文字と小文字によって異なる方法で、比較します。Two strings that contain characters that are located between 'Z' and 'a' in the ASCII table ('[', '\', ']', '^', '', and '`') compare differently, depending on their case. たとえば、2 つの文字列"ABCDE"と"ABCD ^"場合は、比較では、小文字、1 つの方法を比較 ("abcde">"abcd ^") と、その他の方法 ("ABCDE"<"ABCD ^")、比較が大文字の場合。For example, the two strings "ABCDE" and "ABCD^" compare one way if the comparison is lowercase ("abcde" > "abcd^") and the other way ("ABCDE" < "ABCD^") if the comparison is uppercase.


ルーチンによって返される値Routine 必須ヘッダーRequired header
strcmpstrcmp <string.h><string.h>
wcscmpwcscmp <string.h> または <wchar.h><string.h> or <wchar.h>
_mbscmp_mbscmp <mbstring.h><mbstring.h>

互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.


C ランタイム ライブラリのすべてのバージョン。All versions of the C run-time libraries.


// 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" );
      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" );
      strcpy_s( tmp, _countof (tmp), "equal to" );
   printf( "   _stricmp:  String 1 is %s string 2\n", tmp );
Compare strings:
   The quick brown dog jumps over the lazy fox
   The QUICK brown dog jumps over the lazy fox

   strcmp:   String 1 is greater than string 2
   _stricmp:  String 1 is equal to string 2

関連項目See also

文字列操作String Manipulation
memcmp、wmemcmpmemcmp, wmemcmp
_memicmp、_memicmp_l_memicmp, _memicmp_l
strcoll 系関数strcoll Functions
_stricmp、_wcsicmp、_mbsicmp、_stricmp_l、_wcsicmp_l、_mbsicmp_l_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
strncmp、wcsncmp、_mbsncmp、_mbsncmp_lstrncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp、_wcsnicmp、_mbsnicmp、_strnicmp_l、_wcsnicmp_l、_mbsnicmp_l_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr、wcsrchr、_mbsrchr、_mbsrchr_lstrrchr, wcsrchr, _mbsrchr, _mbsrchr_l
strspn、wcsspn、_mbsspn、_mbsspn_lstrspn, wcsspn, _mbsspn, _mbsspn_l
strxfrm、wcsxfrm、_strxfrm_l、_wcsxfrm_lstrxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l