_mbsnbcat_s_mbsnbcat_s_l

至多将另一个多字节字符串的前 n 个字节追加到一个多字节字符串。 这些函数的版本是 _mbsnbcat_mbsnbcat_l,具有安全性增强功能,如 CRT 中的安全性功能中所述。

重要

此 API 不能用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数

语法

errno_t _mbsnbcat_s(
   unsigned char *dest,
   size_t sizeInBytes,
   const unsigned char *src,
   size_t count
);
errno_t _mbsnbcat_s_l(
   unsigned char *dest,
   size_t sizeInBytes,
   const unsigned char *src,
   size_t count,
   _locale_t locale
);
template <size_t size>
errno_t _mbsnbcat_s(
   unsigned char (&dest)[size],
   const unsigned char *src,
   size_t count
); // C++ only
template <size_t size>
errno_t _mbsnbcat_s_l(
   unsigned char (&dest)[size],
   const unsigned char *src,
   size_t count,
   _locale_t locale
); // C++ only

参数

dest
以 null 终止的多字节字符目标字符串。

sizeInBytes
dest 缓冲区的大小(以字节为单位)。

src
以 null 终止的多字节字符源字符串。

count
src 中要追加到 dest 的字节数。

locale
要使用的区域设置。

返回值

如果成功,则为零;否则为错误代码。

错误条件

dest sizeInBytes src 返回值
NULL any any EINVAL
任意 <= 0 any EINVAL
任意 any NULL EINVAL

如果出现任何一个错误状态,该函数生成无效参数错误,如参数验证中所述。 如果处理了错误,则该函数返回 EINVAL 并将 errno 设置为 EINVAL

注解

_mbsnbcat_s 函数最多可以将 dest 的第一个 count 字节追加到 src。 如果 dest 中紧跟在 null 字符之前的字节是前导字节,则 src 的初始字节将覆盖此前导字节。 否则,src 的初始字节会覆盖 dest 的终止 null 字符。 如果在 src 字节追加之前,null 字节出现在 count 中,_mbsnbcat_s 将追加来自 src 的所有字节,直到 null 字符。 如果 count 大于 src 的长度,则会使用 src 的长度代替 count。 生成的字符串由 null 字符终止。 如果复制出现在重叠的字符串之间,则该行为不确定。

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

在 C++ 中,通过模板重载可简化这些函数的使用。 重载可以自动推导出缓冲区长度,从而不再需要指定大小自变量,并且它们可以自动使用更新、更安全的函数替换较旧、不安全的函数。 有关详细信息,请参阅安全模板重载

这些函数的调试库版本首先用 0xFE 填充缓冲区。 若要禁用此行为,请使用 _CrtSetDebugFillThreshold

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

一般文本例程映射

Tchar.h 例程 _UNICODE_MBCS 未定义 _MBCS 已定义 _UNICODE 已定义
_tcsncat_s strncat_s _mbsnbcat_s wcsncat_s
_tcsncat_s_l _strncat_s_l _mbsnbcat_s_l _wcsncat_s_l

要求

例程 必需的标头
_mbsnbcat_s <mbstring.h>
_mbsnbcat_s_l <mbstring.h>

有关兼容性的详细信息,请参阅 兼容性

另请参阅

字符串操作
_mbsnbcmp_mbsnbcmp_l
_strncnt_wcsncnt_mbsnbcnt_mbsnbcnt_l_mbsnccnt_mbsnccnt_l
_mbsnbcpy_mbsnbcpy_l
_mbsnbcpy_s_mbsnbcpy_s_l
_mbsnbset_mbsnbset_l
strncat_strncat_lwcsncat_wcsncat_l_mbsncat_mbsncat_l
strncat_s_strncat_s_lwcsncat_s_wcsncat_s_l_mbsncat_s_mbsncat_s_l