_mbccpy_s, _mbccpy_s_l

將一個多位元組字元從某個字串複製到另一個字串。 這些版本的 _mbccpy具有_mbccpy_l安全性增強功能,如CRT中的安全性功能中所述

重要

這個 API 不能用於在 Windows 執行階段中執行的應用程式。 如需詳細資訊,請參閱 CRT functions not supported in Universal Windows Platform apps (通用 Windows 平台應用程式中不支援的 CRT 函式)。

語法

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

參數

dest
複製目的地。

buffSizeInBytes
目的緩衝區大小。

pCopied
填入所複製的位元組數目 (若成功,即為 1 或 2)。 如果數目無關緊要,則傳遞 NULL

src
要複製的多位元組字元。

locale
要使用的地區設定。

傳回值

如果成功,就是零,如果失敗,則為錯誤碼。 如果 srcdestNULL,或是將超過buffSizeinBytes位元組複製到 dest,則會叫用無效的參數處理程式,如參數驗證中所述。 如果允許繼續執行,函式會傳回 EINVAL,並將 errno 設定為 EINVAL

備註

_mbccpy_s 函式會將一個多位元組字元從 src 複製到 dest。 如果未 src 指向由隱含呼叫 _ismbblead所決定之多位元組位元元的前置位元組,則會複製指向的單一位元組 src 。 如果src指向前置位元組,但下列位元組為 0,因此無效,則會將 0 複製到 desterrno ,並將設為 EILSEQ,且函式會傳EILSEQ回 。

_mbccpy_s 不會附加 Null 終止符;不過,如果 src 指向 Null 字元,則會將該 Null 複製到 dest (做為一般單一位元組複本)。

填入所複製的位元組數目作為 pCopied 中的值。 如果作業成功,可能的值為 1 和 2。 如果傳入 NULL,則會略過這個參數。

src 已複製到 dest pCopied 傳回值
非前導位元組 非前導位元組 1 0
0 0 1 0
後面接著非 0 的前導位元組 後面接著非 0 的前導位元組 2 0
後面接著 0 的前導位元組 0 1 EILSEQ

第二個數據列只是第一個數據列的特殊案例。 資料表假設 buffSizeInBytes>= pCopied

針對任何地區設定相關行為,_mbccpy_s 會使用目前的地區設定。 _mbccpy_s_l_mbccpy_s 相同,只不過 _mbccpy_s_l 會針對任何與地區設定相關的行為使用傳入的地區設定。

在 C++ 中,使用這些函式已透過範本多載簡化;多載可自動推斷緩衝區長度,因而不需要指定大小引數。 如需詳細資訊,請參閱安全範本多載

根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態

一般文字常式對應

Tchar.h 常式 _UNICODE_MBCS 未定義 _MBCS 已定義 _UNICODE 已定義
_tccpy_s 巨集或內嵌函式的對應。 _mbccpy_s 巨集或內嵌函式的對應。

需求

常式 必要的標頭
_mbccpy_s <mbstring.h>
_mbccpy_s_l <mbstring.h>

如需相容性詳細資訊,請參閱相容性

另請參閱

地區設定
多位元組字元序列的解譯
_mbclen、 、 mblen_mblen_l