_mbccpy_s、_mbccpy_s_l_mbccpy_s, _mbccpy_s_l

文字列のマルチバイト文字 1 個を他の文字列にコピーします。Copies one multibyte character from a string to another string. これらのバージョンの _mbccpy、_mbccpy_l は、「CRT のセキュリティ機能」で説明されているように、セキュリティが強化されています。These versions of _mbccpy, _mbccpy_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 _mbccpy_s(
   unsigned char *dest,
   size_t buffSizeInBytes,
   int * pCopied,
   const unsigned char *src
);
errno_t _mbccpy_s_l(
   unsigned char *dest,
   size_t buffSizeInBytes,
   int * pCopied,
   const unsigned char *src,
   locale_t locale
);
template <size_t size>
errno_t _mbccpy_s(
   unsigned char (&dest)[size],
   int * pCopied,
   const unsigned char *src
); // C++ only
template <size_t size>
errno_t _mbccpy_s_l(
   unsigned char (&dest)[size],
   int * pCopied,
   const unsigned char *src,
   locale_t locale
); // C++ only

パラメーターParameters

destdest
コピー先。Copy destination.

buffSizeInBytesbuffSizeInBytes
コピー先のバッファーのサイズ。Size of the destination buffer.

pCopiedpCopied
コピーされたバイト数が格納されます (正常終了した場合は 1 または 2)。Filled with the number of bytes copied (1 or 2 if successful). 渡すNULL数に関する重要でない場合。Pass NULL if you don't care about the number.

srcsrc
コピーするマルチバイト文字。Multibyte character to copy.

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

戻り値Return Value

正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。Zero if successful; an error code on failure. 場合srcまたはdestNULL、数より多い場合、またはbuffSizeinBytesにバイトをコピーするはdest、無効なパラメーター ハンドラーが呼び出されます」の説明に従ってパラメーターの検証です。If src or dest is NULL, or if more than buffSizeinBytes bytes would be copied to dest, then the invalid parameter handler is invoked, as described in Parameter Validation. 関数を返すかどうかは、引き続き実行が許可された、 EINVALerrnoに設定されているEINVALします。If execution is allowed to continue, the functions return EINVAL and errno is set to EINVAL.

RemarksRemarks

_Mbccpy_s関数からの 1 つのマルチバイト文字のコピー srcdestします。The _mbccpy_s function copies one multibyte character from src to dest. 場合srcへの暗黙的な呼び出しによって決定されるマルチバイト文字の先行バイトを指していない_ismbblead、1 バイトをsrcへのポインターをコピーします。If src does not point to the lead byte of a multibyte character as determined by an implicit call to _ismbblead, then the single byte that src points to is copied. 場合src先行バイトが次のバイトへのポインターには、0 および無効なため、その後に 0 がコピーされますdesterrnoに設定されているEILSEQ、および関数が返されるEILSEQします。If src points to a lead byte but the following byte is 0 and thus invalid, then 0 is copied to dest, errno is set to EILSEQ, and the function returns EILSEQ.

_mbccpy_s null 終端文字を追加しません。 ただし、場合srcを null にコピーされますが、null 文字を指すdest (これは通常、1 バイトのコピーだけです)。_mbccpy_s does not append a null terminator; however, if src points to a null character, then that null is copied to dest (this is just a regular single-byte copy).

pCopiedコピーされたバイト数が入力されます。The value in pCopied is filled with the number of bytes copied. 操作が正常に終了した場合は、1 と 2 のどちらかの値となります。Possible values are 1 and 2 if the operation is successful. 場合NULLが渡される、このパラメーターは無視されます。If NULL is passed in, this parameter is ignored.

srcsrc コピー destcopied to dest pCopiedpCopied 戻り値Return value
先行バイト以外non-lead-byte 先行バイト以外non-lead-byte 11 00
00 00 11 00
後続が 0 以外の先行バイトlead-byte followed by non-0 後続が 0 以外の先行バイトlead-byte followed by non-0 22 00
後続が 0 以外の先行バイトlead-byte followed by 0 00 11 EILSEQEILSEQ

2 行目は、単に 1 行目の特殊なケースです。Note that the second row is just a special case of the first. 表では、メモもbuffSizeInBytes >= pCopiedします。Also note that the table assumes buffSizeInBytes >= pCopied.

_mbccpy_sロケールに依存する動作に現在のロケールを使用します。_mbccpy_s uses the current locale for any locale-dependent behavior. _mbccpy_s_lと同じ _mbccpy_sする点を除いて _mbccpy_s_lの任意のロケールに依存する動作に渡されたロケールを使用します。_mbccpy_s_l is identical to _mbccpy_s except that _mbccpy_s_l uses the locale passed in for any locale-dependent behavior.

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. 詳細については、「 Secure Template Overloads」を参照してください。For more information, see Secure Template Overloads.

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

Tchar.h のルーチンTchar.h routine _UNICODE および _MBCS が未定義の場合_UNICODE and _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tccpy_s_tccpy_s マクロまたはインライン関数に割り当てる。Maps to macro or inline function. _mbccpy_s_mbccpy_s マクロまたはインライン関数に割り当てる。Maps to macro or inline function.

必要条件Requirements

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

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

関連項目See also

ロケールLocale
マルチバイト文字のシーケンスの解釈Interpretation of Multibyte-Character Sequences
_mbclen、mblen、_mblen_l_mbclen, mblen, _mblen_l