wcscat, wcscat_s
来自 zh.cppreference.net
| 定义于头文件 <wchar.h>
|
||
wchar_t* wcscat( wchar_t* dest, const wchar_t* src );
|
(1) | (自 C95) (至 C99) |
wchar_t* wcscat( wchar_t* restrict dest, const wchar_t* restrict src );
|
(自 C99) | |
errno_t wcscat_s( wchar_t* restrict dest, rsize_t destsz,
const wchar_t* restrict src );
|
(2) | (自 C11) |
1) 将由
src 指向的宽字符串副本追加到由 dest 指向的宽字符串末尾。宽字符 src[0] 替换 dest 末尾的空终止符。结果宽字符串以空字符终止。如果目标数组不足以容纳 src 和 dest 的内容以及结尾的空宽字符,则行为未定义。如果字符串重叠,则行为未定义。2) 与 (1) 相同,不同之处在于它可能会用未指定的值破坏目标数组的其余部分(从写入的最后一个字符到
destsz),并且在运行时检测到以下错误,并调用当前安装的 约束处理函数:
src或dest是空指针destsz为零或大于RSIZE_MAX / sizeof(wchar_t)- 在
destsz的前dest - 个宽字符中不存在空终止符会发生截断(
dest末尾的可用空间不足以容纳src的所有宽字符,包括空终止符) - 源字符串和目标字符串之间会发生重叠
与所有边界检查函数一样,
wcscat_s 仅在实现定义了 __STDC_LIB_EXT1__ 且用户在包含 __STDC_WANT_LIB_EXT1__ 之前将 1 定义为整数常量 <wchar.h> 时保证可用。参数
| dest | - | 指向待追加的以空字符结尾的宽字符串的指针 |
| src | - | 指向待复制的以空字符结尾的宽字符串的指针 |
| destsz | - | 最大写入字符数,通常为目标缓冲区的大小 |
返回值
1) 返回一个
dest 的副本。2)
L'\0' 成功时返回零,错误时返回非零值。此外,发生错误时,会将内容写入 dest[0](除非 dest 是空指针,或者 destsz 为零或大于 RSIZE_MAX / sizeof(wchar_t))。示例
运行此代码
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
int main(void)
{
wchar_t str[50] = L"Земля, прощай.";
wcscat(str, L" ");
wcscat(str, L"В добрый путь.");
setlocale(LC_ALL, "en_US.utf8");
printf("%ls", str);
}
输出:
Земля, прощай. В добрый путь.
参考资料
- C23 标准(ISO/IEC 9899:2024):
- 7.31.4.3.1 wcscat 函数(第 439 页)
- K.3.9.3.2.1 wcscat_s 函数(第 665-666 页)
- C17 标准(ISO/IEC 9899:2018):
- 7.29.4.3.1 wcscat 函数(第 315 页)
- K.3.9.2.2.1 wcscat_s 函数(第 466 页)
- C11 标准(ISO/IEC 9899:2011):
- 7.29.4.3.1 wcscat 函数(第 432 页)
- K.3.9.2.2.1 wcscat_s 函数(第 642-643 页)
- C99 标准(ISO/IEC 9899:1999):
- 7.24.4.3.1 wcscat 函数(第 378 页)
参见
|
(C95)
(C11)
|
将指定数量的宽字符从一个宽字符串追加到另一个宽字符串
(函数) |
|
(C11)
|
连接两个字符串
(函数) |
|
(C95)
(C11)
|
将一个宽字符串复制到另一个宽字符串
(函数) |
|
C++ 文档
关于
wcscat
|
|