2 つの文字列を、指定した文字数まで比較します。
重要
_mbsncmp および _mbsncmp_l は、Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。
構文
int strncmp(
   const char *string1,
   const char *string2,
   size_t count
);
int wcsncmp(
   const wchar_t *string1,
   const wchar_t *string2,
   size_t count
);
int _mbsncmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count
);
int _mbsncmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count,
   _locale_t locale
);int _mbsnbcmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count
);
パラメーター
string1, string2 
比較する文字列。
count
比較する文字数
locale
使用するロケール。
戻り値
戻り値は string1 と string2 の部分文字列の関係を次のように示します。
| 戻り値 | 説明 | 
|---|---|
| < 0 | string1 部分文字列は string2 部分文字列よりも小さい | 
| 0 | string1 部分文字列は string2 部分文字列と同じ | 
| > 0 | string1 部分文字列は string2 部分文字列よりも大きい | 
パラメーター検証エラーが発生した場合、_mbsncmp および _mbsncmp_l は _NLSCMPERROR を返します。これは、<string.h> と <mbstring.h> で定義されています。
解説
strncmp 関数は、count と string1 の先頭の最大 string2 文字で序数に基づく比較を行い、部分文字列の間の関係を示す値を返します。 strncmp は _strnicmp の大文字と小文字を区別するバージョンです。 wcsncmp および _mbsncmp は、_wcsnicmp および _mbsnicmp の大文字と小文字を区別するバージョンです。
wcsncmp 関数と _mbsncmp 関数は、strncmp 関数のワイド文字バージョンとマルチバイト文字バージョンです。 wcsncmpの引数はワイド文字列です。 _mbsncmpの引数はマルチバイト文字列です。 _mbsncmp はマルチバイト コード ページに基づいてマルチバイト文字のシーケンスを認識し、エラーが発生した場合は _NLSCMPERROR を返します。
また、_mbsncmp および _mbsncmp_l はパラメーターを検証します。 string1またはstring2が null ポインターであり、countが 0 に等しくない場合は、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラー呼び出されます。 実行の継続が許可された場合、_mbsncmp および _mbsncmp_l は _NLSCMPERROR を返し、errno を EINVAL に設定します。 strncmp と wcsncmp はパラメーターを検証しません。 それ以外では、これらの関数の動作は同じです。
_mbsncmp および _mbsncmp_l の比較の動作は、ロケールの LC_CTYPE カテゴリの設定により影響されます。 これは、マルチバイト文字の先頭および末尾のバイトの検出を制御します。 詳細については、setlocaleを参照してください。 _mbsncmp は、ロケールに依存するこの動作に現在のロケールを使用します。 _mbsncmp_l 関数は、代わりに locale パラメーターを使用することを除けば、同一です。 詳細については、「 Locale」を参照してください。 ロケールが 1 バイトのロケールの場合、これらの関数の動作は strncmp と同一です。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
汎用テキスト ルーチンのマップ
TCHAR.H ルーチン | 
_UNICODE と _MBCS が定義されていない | 
_MBCS が定義されている | 
_UNICODE が定義されている | 
|---|---|---|---|
_tcsnccmp | 
strncmp | 
_mbsncmp | 
wcsncmp | 
_tcsncmp | 
strncmp | 
_mbsnbcmp | 
wcsncmp | 
_tccmp | 
マクロまたはインライン関数にマップされます | _mbsncmp | 
マクロまたはインライン関数にマップされます | 
要件
| ルーチンによって返される値 | 必須ヘッダー | 
|---|---|
strncmp | 
<string.h> | 
wcsncmp | 
<string.h> または <wchar.h> | 
_mbsncmp, _mbsncmp_l  | 
<mbstring.h> | 
互換性の詳細については、「 Compatibility」を参照してください。
例
// crt_strncmp.c
#include <string.h>
#include <stdio.h>
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";
int main( void )
{
   char tmp[20];
   int result;
   printf( "Compare strings:\n      %s\n      %s\n\n",
           string1, string2 );
   printf( "Function:   strncmp (first 10 characters only)\n" );
   result = strncmp( string1, string2 , 10 );
   if( result > 0 )
      strcpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, sizeof(tmp), "less than" );
   else
      strcpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:      String 1 is %s string 2\n\n", tmp );
   printf( "Function:   strnicmp _strnicmp (first 10 characters only)\n" );
   result = _strnicmp( string1, string2, 10 );
   if( result > 0 )
      strcpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, sizeof(tmp), "less than" );
   else
      strcpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:      String 1 is %s string 2\n", tmp );
}
Compare strings:
      The quick brown dog jumps over the lazy fox
      The QUICK brown fox jumps over the lazy dog
Function:   strncmp (first 10 characters only)
Result:      String 1 is greater than string 2
Function:   strnicmp _strnicmp (first 10 characters only)
Result:      String 1 is equal to string 2
関連項目
文字列操作
ロケール
マルチバイト文字のシーケンスの解釈
_mbsnbcmp, _mbsnbcmp_l 
_mbsnbicmp, _mbsnbicmp_l 
strcmp、 wcscmp、 _mbscmp
strcoll  関数
_strnicmp、 _wcsnicmp、 _mbsnicmp、 _strnicmp_l、 _wcsnicmp_l、 _mbsnicmp_l
strrchr、 wcsrchr、 _mbsrchr、 _mbsrchr_l
_strset、 _strset_l、 _wcsset、 _wcsset_l、 _mbsset、 _mbsset_l
strspn、 wcsspn、 _mbsspn、 _mbsspn_l