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
参照
関連項目
_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