_mbsnbcpy_s、_mbsnbcpy_s_l_mbsnbcpy_s, _mbsnbcpy_s_l

文字列のnバイトをコピー先の文字列にコピーします。Copies n bytes of a string to a destination string. これらのバージョンの _mbsnbcpy、_mbsnbcpy_l は、「CRT のセキュリティ機能」で説明されているように、セキュリティが強化されています。These versions of _mbsnbcpy, _mbsnbcpy_l have security enhancements, as described in Security Features in the CRT.

重要

この API は、Windows ランタイムで実行するアプリケーションでは使用できません。This API 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

errno_t _mbsnbcpy_s(
   unsigned char * strDest,
   size_t sizeInBytes,
   const unsigned char * strSource,
   size_t count
);
errno_t _mbsnbcpy_s_l(
   unsigned char * strDest,
   size_t sizeInBytes,
   const unsigned char * strSource,
   size_t count,
   _locale_t locale
);
template <size_t size>
errno_t _mbsnbcpy_s(
   unsigned char (&strDest)[size],
   const unsigned char * strSource,
   size_t count
); // C++ only
template <size_t size>
errno_t _mbsnbcpy_s_l(
   unsigned char (&strDest)[size],
   const unsigned char * strSource,
   size_t count,
   _locale_t locale
); // C++ only

パラメーターParameters

strDeststrDest
文字列のコピー先。Destination for character string to be copied.

sizeInBytessizeInBytes
コピー先のバッファー サイズ。Destination buffer size.

strSourcestrSource
コピーする文字列。Character string to be copied.

countcount
コピー対象のバイト数。Number of bytes to be copied.

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

戻り値Return Value

成功した場合は0。無効なパラメーターが渡された場合は、 EINVALZero if successful; EINVAL if a bad parameter was passed in.

RemarksRemarks

_Mbsnbcpy_s関数は、 Strsourceからstrsourcecountバイトをコピーします。The _mbsnbcpy_s function copies count bytes from strSource to strDest. Countstrdestのサイズを超える場合、入力文字列のいずれかが null ポインターであるか、またはsizeinbytesまたはcountが0である場合、「パラメーターの検証」で説明されているように、関数は無効なパラメーターハンドラーを呼び出します。If count exceeds the size of strDest, either of the input strings is a null pointer, or sizeInBytes or count is 0, the function invokes the invalid parameter handler as described in Parameter Validation . 実行の継続が許可された場合、関数はEINVALを返します。If execution is allowed to continue, the function returns EINVAL. コピー元とコピー先の文字列が重なり合う場合、 _mbsnbcpy_sの動作は未定義になります。If the source and destination strings overlap, the behavior of _mbsnbcpy_s is undefined.

出力値は、ロケールの LC_CTYPE カテゴリの設定に影響されます。詳細については、「setlocale」を参照してください。The output value is affected by the setting of the LC_CTYPE category setting of the locale; see setlocale for more information. _l サフィックスが付いていないこれらの関数のバージョンでは、このロケールに依存する動作に現在のロケールを使用します。 _l サフィックスが付いているバージョンは、渡されたロケール パラメーターを代わりに使用する点を除いて同じです。The versions of these functions without the _l suffix use the current locale for this locale-dependent behavior; the versions with the _l suffix are identical except that they use the locale parameter passed in instead. 詳細については、「 Locale」を参照してください。For more information, see Locale.

注意

この関数のセキュリティで保護されていないバージョンとは異なり、 _mbsnbcpy_sでは null の埋め込みは行われず、常に null が文字列を終了します。Unlike the non-secure version of this function, _mbsnbcpy_s does not do any null padding and always null terminates the string.

C++ では、これらの関数の使用はテンプレートのオーバーロードによって簡素化されます。オーバーロードでは、バッファー長を自動的に推論できる (サイズの引数を指定する必要がなくなる) だけでなく、古くてセキュリティが万全ではない関数を新しく安全な関数に自動的に置き換えることができます。In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. 詳細については、「 Secure Template Overloads」を参照してください。For more information, see Secure Template Overloads.

これらの関数のデバッグ バージョンは、最初にバッファーを 0xFD で埋めます。The debug versions of these functions first fill the buffer with 0xFD. この動作を無効にするには、_CrtSetDebugFillThreshold を使用します。To disable this behavior, use _CrtSetDebugFillThreshold.

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

Tchar.h のルーチンTchar.h routine _UNICODE および _MBCS が未定義の場合_UNICODE and _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tcsncpy_s_tcsncpy_s _strncpy_s_strncpy_s _mbsnbcpy_s_mbsnbcpy_s _wcsncpy_s_wcsncpy_s
_tcsncpy_s_l_tcsncpy_s_l _strncpy_s_l_strncpy_s_l _mbsnbcpy_s_l_mbsnbcpy_s_l _wcsncpy_s_l_wcsncpy_s_l

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
_mbsnbcpy_s_mbsnbcpy_s <mbstring.h><mbstring.h>
_mbsnbcpy_s_l_mbsnbcpy_s_l <mbstring.h><mbstring.h>

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

関連項目See also

文字列操作String Manipulation
_mbsnbcat、_mbsnbcat_l_mbsnbcat, _mbsnbcat_l
_mbsnbcmp、_mbsnbcmp_l_mbsnbcmp, _mbsnbcmp_l
_strncnt、_wcsncnt、_mbsnbcnt、_mbsnbcnt_l、_mbsnccnt、_mbsnccnt_l_strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l
_mbsnbicmp、_mbsnbicmp_l_mbsnbicmp, _mbsnbicmp_l
_mbsnbset、_mbsnbset_l_mbsnbset, _mbsnbset_l
strncpy、_strncpy_l、wcsncpy、_wcsncpy_l、_mbsncpy、_mbsncpy_lstrncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l