%>
至多将另一个多字节字符串的前 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 |
任意 | 任意 | 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> |
有关兼容性的详细信息,请参阅 兼容性。
另请参阅
字符串操作
%>
%>
%>
%>