strncmp、wcsncmp、_mbsncmp、_mbsncmp_lstrncmp, wcsncmp, _mbsncmp, _mbsncmp_l

2 つの文字列を、指定した文字数まで比較します。Compares up to the specified count of characters of two strings.

重要

_mbsncmp_mbsncmp_l Windows ランタイムで実行するアプリケーションでは使用できません。_mbsncmp and _mbsncmp_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.

構文Syntax

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
);

パラメーターParameters

string1, string2string1, string2
比較する文字列。Strings to compare.

countcount
比較する文字数Number of characters to compare.

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

戻り値Return Value

戻り値の部分文字列の関係を示すstring1string2次のようにします。The return value indicates the relation of the substrings of string1 and string2 as follows.

戻り値Return value 説明Description
< 0< 0 string1部分文字列より小さいstring2部分文字列string1 substring less than string2 substring
00 string1部分文字列と同じstring2部分文字列string1 substring identical to string2 substring
> 0> 0 string1部分文字列より大きいstring2部分文字列string1 substring greater than string2 substring

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

RemarksRemarks

Strncmp関数は、最大で 1 つ目の序数に基づく比較を実行しますカウント文字string1string2と。これらの部分文字列間のリレーションシップを示す値を返します。The strncmp function performs an ordinal comparison of at most the first count characters in string1 and string2 and returns a value indicating the relationship between the substrings. strncmpの大文字バージョン _strnicmpします。strncmp is a case-sensitive version of _strnicmp. wcsncmp_mbsncmpの大文字バージョン _wcsnicmp_mbsnicmpします。wcsncmp and _mbsncmp are case-sensitive versions of _wcsnicmp and _mbsnicmp.

wcsncmp_mbsncmpのワイド文字とマルチバイト文字バージョンstrncmpします。wcsncmp and _mbsncmp are wide-character and multibyte-character versions of strncmp. 引数wcsncmpはワイド文字列 _mbsncmpはマルチバイト文字の文字列。The arguments of wcsncmp are wide-character strings; those of _mbsncmp are multibyte-character strings. _mbsncmpマルチバイト コード ページに従ってマルチバイト文字シーケンスを認識し、返しますするとエラーが発生します。_mbsncmp recognizes multibyte-character sequences according to a multibyte code page and returns _NLSCMPERROR on an error.

また、 _mbsncmp_mbsncmp_lパラメーターを検証します。Also, _mbsncmp and _mbsncmp_l validate parameters. 場合string1またはstring2 null ポインターの場合で説明されているとおり、無効なパラメーター ハンドラーが呼び出されますパラメーターの検証です。If string1 or string2 is a null pointer, the invalid parameter handler is invoked, as described in Parameter Validation. 続けるには、実行が許可された場合 _mbsncmp_mbsncmp_l返すすると設定とerrnoEINVALします。If execution is allowed to continue, _mbsncmp and _mbsncmp_l return _NLSCMPERROR and set errno to EINVAL. strncmpwcsncmpパラメーターを検証できません。strncmp and wcsncmp do not validate their parameters. それ以外では、これらの関数の動作は同じです。These functions behave identically otherwise.

比較の動作の _mbsncmp_mbsncmp_lの設定に影響は、 LC_CTYPEロケールのカテゴリの設定。The comparison behavior of _mbsncmp and _mbsncmp_l is affected by the setting of the LC_CTYPE category setting of the locale. これは、マルチバイト文字の先頭および末尾のバイトの検出を制御します。This controls detection of leading and trailing bytes of multibyte characters. 詳細については、「setlocale」をご覧ください。For more information, see setlocale. _Mbsncmp関数は、このロケールに依存する動作に現在のロケールを使用します。The _mbsncmp function uses the current locale for this locale-dependent behavior. _Mbsncmp_l関数を使用する点を除いて同一です、ロケールパラメーター代わりにします。The _mbsncmp_l function is identical except that it uses the locale parameter instead. 詳細については、「 Locale」を参照してください。For more information, see Locale. これらの関数の動作と同じですが、ロケールが 1 バイトのロケールの場合は、 strncmpします。If the locale is a single-byte locale, the behavior of these functions is identical to strncmp.

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

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tcsnccmp_tcsnccmp strncmpstrncmp _mbsncmp_mbsncmp wcsncmpwcsncmp
_tcsncmp_tcsncmp strncmpstrncmp _mbsnbcmp_mbsnbcmp wcsncmpwcsncmp
_tccmp_tccmp マクロまたはインライン関数にマップされますMaps to macro or inline function _mbsncmp_mbsncmp マクロまたはインライン関数にマップされますMaps to macro or inline function
該当なしnot applicable 該当なしnot applicable _mbsncmp_l_mbsncmp_l 該当なしnot applicable

必要条件Requirements

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

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

Example

// 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

関連項目See also

文字列操作String Manipulation
ロケールLocale
マルチバイト文字のシーケンスの解釈Interpretation of Multibyte-Character Sequences
_mbsnbcmp、_mbsnbcmp_l_mbsnbcmp, _mbsnbcmp_l
_mbsnbicmp、_mbsnbicmp_l_mbsnbicmp, _mbsnbicmp_l
strcmp、wcscmp、_mbscmpstrcmp, wcscmp, _mbscmp
strcoll 系関数strcoll Functions
_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
_strset、_strset_l、_wcsset、_wcsset_l、_mbsset、_mbsset_l_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l
strspn、wcsspn、_mbsspn、_mbsspn_lstrspn, wcsspn, _mbsspn, _mbsspn_l