_mbsnbcpy、_mbsnbcpy_l

复制字符串的 n 字节到目标字符串。 这些函数的更多安全版本都是可获得的,请参见 _mbsnbcpy_s、_mbsnbcpy_s_l

重要

此 API 不能用于在 Windows 运行时 中执行的应用程序。有关更多信息,请参见不支持 /ZW 的 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。 如果 count 超过strDest 的大小或源和目标字符串重叠,_mbsnbcpy 的行为是未定义的。

如果 strSource 或 strDest都是空指针,这个函数则会调用无效参数处理程序,如 参数验证 所述。 如果允许执行继续,则该函数返回 NULL 并将 errno 设置为 EINVAL。

输出值受区域设置的 LC_CTYPE 类设置影响;有关更多信息,请参见 setlocale、_wsetlocale。 除了那些不具有_l 后缀使用当前的区域设置以及具有 _l 后缀而不是使用传入的区域设置参数,这些函数的版本都是相同的。 有关详细信息,请参阅区域设置

安全说明安全说明

这些函数可能容易受到的缓冲区溢出的威胁。缓冲区溢出可以用来执行任意代码攻击,这可能会导致特权的一个不必要的高度并且危及系统有关更多信息,请参见避免缓冲区溢出

在 C++ 中,这些函数具有模板重载,以调用这些函数更新、更安全的副本。 有关更多信息,请参见安全模板重载

一般文本例程映射

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>

有关更多兼容性信息,请参见兼容性

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关详细信息,请参阅平台调用示例

请参见

参考

字符串操作 (CRT)

_mbsnbcat、_mbsnbcat_l

_mbsnbcmp、_mbsnbcmp_l

_strncnt、_wcsncnt、_mbsnbcnt、_mbsnbcnt_l、_mbsnccnt、_mbsnccnt_l

_mbsnbset、_mbsnbset_l

strncpy、_strncpy_l、wcsncpy、_wcsncpy_l、_mbsncpy、_mbsncpy_l