_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
要使用的地區設定。
傳回值
如果成功,就是零,如果失敗,則為錯誤碼。 如果 src
或 dest
為 NULL
,或是將超過buffSizeinBytes
位元組複製到 dest
,則會叫用無效的參數處理程式,如參數驗證中所述。 如果允許繼續執行,函式會傳回 EINVAL
,並將 errno
設定為 EINVAL
。
備註
_mbccpy_s
函式會將一個多位元組字元從 src
複製到 dest
。 如果未 src
指向由隱含呼叫 _ismbblead
所決定之多位元組位元元的前置位元組,則會複製指向的單一位元組 src
。 如果src
指向前置位元組,但下列位元組為 0,因此無效,則會將 0 複製到 dest
errno
,並將設為 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> |
如需相容性詳細資訊,請參閱相容性。