wcsncat, wcsncat_s
|
定义于头文件
<wchar.h>
|
||
| (1) | ||
|
wchar_t
*
wcsncat
(
wchar_t
*
dest,
const
wchar_t
*
src,
size_t
count
)
;
|
(C95起)
(C99前) |
|
|
wchar_t
*
wcsncat
(
wchar_t
*
restrict
dest,
const wchar_t * restrict src, size_t count ) ; |
(C99起) | |
|
errno_t wcsncat_s
(
wchar_t
*
restrict
dest, rsize_t destsz,
const wchar_t * restrict src, rsize_t count ) ; |
(2) | (C11起) |
count
个宽字符从
src
所指向的宽字符串追加到
dest
所指向的字符串末尾,若遇到空终止符则停止复制。宽字符
src
[
0
]
会替换
dest
末尾的空终止符。函数始终会在末尾追加空终止符(因此函数可能写入的最大宽字符数为
count
+
1
)。
str
和
dest
的内容及终止空宽字符,则行为未定义。
destsz
),且会在运行时检测以下错误并调用当前安装的
约束处理程序
函数:
-
-
src或dest是空指针 -
destsz或count为零或大于 RSIZE_MAX / sizeof ( wchar_t ) -
在
dest的前destsz个宽字符中不存在空宽字符 -
会发生截断:
count或src长度(取较小者)超过dest的空终止符与destsz之间的可用空间 - 源字符串和目标字符串之间会出现重叠
-
-
与所有边界检查函数一样,仅当实现定义了
__STDC_LIB_EXT1__
且用户在包含
<wchar.h>
前将
__STDC_WANT_LIB_EXT1__
定义为整型常量
1
时,才保证
wcsncat_s可用。
目录 |
参数
| dest | - | 指向要追加内容的以空字符结尾的宽字符串的指针 |
| src | - | 指向要复制的以空字符结尾的宽字符串的指针 |
| count | - | 要复制的最大宽字符数 |
| destsz | - | 目标缓冲区的大小 |
返回值
dest
的副本
dest
是空指针,或
destsz
为零或大于
RSIZE_MAX
/
sizeof
(
wchar_t
)
)。
注释
尽管截断以适应目标缓冲区是一种安全风险,因此对
wcsncat_s
构成运行时约束违规,但通过将
count
指定为目标数组大小减一仍可实现截断行为:该函数将复制前
count
个宽字符并照常追加空终止符:
wcsncat_s
(
dst,
sizeof
dst
/
sizeof
*
dst, src,
(
sizeof
dst
/
sizeof
*
dst
)
-
wcsnlen_s
(
dst,
sizeof
dst
/
sizeof
*
dst
)
-
1
)
;
示例
可能的输出:
Земля, прощай. В добрый
参考文献
- C17 标准 (ISO/IEC 9899:2018):
-
- 7.29.4.3.2 wcsncat 函数 (p: 315)
-
- K.3.9.2.2.2 wcsncat_s 函数 (p: 466-467)
- C11 标准 (ISO/IEC 9899:2011):
-
- 7.29.4.3.2 wcsncat 函数 (p: 432-433)
-
- K.3.9.2.2.2 wcsncat_s 函数 (p: 643-644)
- C99标准(ISO/IEC 9899:1999):
-
- 7.24.4.3.2 wcsncat函数(页码:378-379)
参见
|
(C95)
(C11)
|
将一个宽字符串的副本追加到另一个宽字符串
(函数) |
|
(C11)
|
连接两个字符串的指定数量字符
(函数) |
|
(C95)
(C11)
|
将一个宽字符串复制到另一个宽字符串
(函数) |
|
C++ 文档
关于
wcsncat
|
|