_mbsnbcpy_mbsnbcpy_l

将字符串的 n 个字节复制到目标字符串。 提供这些函数的更安全版本;请参阅 _mbsnbcpy_s_mbsnbcpy_s_l

重要

此 API 不能用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 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 函数将 count 个字节从 strSource 复制到 strDest。 如果 count 超过 strDest 的大小,或者源字符串和目标字符串重叠,则 _mbsnbcpy 的行为是不确定的。

如果 strSourcestrDest 为空指针,此函数将调用无效参数处理程序,如参数验证中所述。 如果允许继续执行,则函数将返回 NULL,并且将 errno 设置为 EINVAL

输出值受区域设置的 LC_CTYPE 类别设置的影响。 有关详细信息,请参阅 setlocale。 这些函数的版本都相同,只是那些不带 _l 后缀的函数使用当前区域设置,而那些带有 _l 后缀的函数则使用传入的区域设置参数。 有关详细信息,请参阅 Locale

重要

这些函数可能容易受到的缓冲区溢出的威胁。 缓冲区溢出可用于执行任意代码者攻击,这些代码可能会导致不必要地提升特权并危害系统。 有关详细信息,请参阅避免缓冲区溢出

在 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