共用方式為


_mbsnbcpy, _mbsnbcpy_l

字串的 n 個字節複製到目的地字串。 這些函式有更安全的版本可供使用,請參閱 _mbsnbcpy_s_mbsnbcpy_s_l

重要

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

語法

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

參數

strDest
要複製的字元字串之目的地。

strSource
要複製的字元字串。

count
要複製的位元組數目。

locale
要使用的地區設定。

傳回值

_mbsnbcpy 會傳回目的字元字串的指標。 未保留表示錯誤的傳回值。

備註

_mbsnbcpy 函式從 strSource 複製 count 個位元組到 strDest。 如果 strDest 超過 _mbsnbcpy 的大小,或來源和目的字串重疊,則 count 的行為未定義。

如果 strSourcestrDest 為 Null 指標,此函式會叫用無效的參數處理程式,如參數驗證中所述。 如果允許繼續執行,函式會傳回 NULL,並將 errno 設為 EINVAL

輸出值會受到設定地區設定之 LC_CTYPE 類別設定的影響。 如需詳細資訊,請參閱setlocale。 這些函式的版本相同,不同之處在於沒有 _l 後綴的函式會使用目前的地區設定,而具有 _l 後綴的版本會改用傳入的地區設定參數。 如需詳細資訊,請參閱 Locale

重要

這些函式可能容易受到緩衝區滿溢的威脅。 緩衝區滿溢可以用來執行任意的攻擊者程式碼,這會造成非預期的提高權限,並且危害系統。 如需詳細資訊,請參閱 Avoiding Buffer Overruns (避免緩衝區滿溢)

在 C++ 中,這些函式具有多載樣板,可以叫用這些函式的更新、更安全之對應版本。 如需詳細資訊,請參閱安全範本多載

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

一般文字常式對應

Tchar.h 常式 _UNICODE_MBCS 未定義 _MBCS 已定義 _UNICODE 已定義
_tcsncpy strncpy _mbsnbcpy wcsncpy
_tcsncpy_l _strncpy_l _mbsnbcp_l _wcsncpy_l

需求

常式 必要的標頭
_mbsnbcpy <mbstring.h>
_mbsnbcpy_l <mbstring.h>

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

另請參閱

字串操作
_mbsnbcat, _mbsnbcat_l
_mbsnbcmp, _mbsnbcmp_l
_strncnt、、_wcsncnt_mbsnbcnt_mbsnbcnt_l、、_mbsnccnt_mbsnccnt_l
_mbsnbset, _mbsnbset_l
strncpy、、_strncpy_lwcsncpy_wcsncpy_l、、_mbsncpy_mbsncpy_l