Xi Xu's More Things

wcscat, wcscat_s

来自cppreference.com
< c‎ | string‎ | wide
 
 
 
空终止宽字符串
函数
字符操作
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C99)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
转换成数值格式
(C95)(C99)
(C95)(C99)
(C99)(C95)(C99)
(C99)(C99)
字符串操作
(C95)(C11)
(C95)(C11)
(C95)(C11)
wcscatwcscat_s
(C95)(C11)
(C95)(C11)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)
(C95)(C11)
数组操作
(C95)(C11)
(C95)(C11)
(C95)
(C95)
(C95)
 
在标头 <wchar.h> 定义
(1)
wchar_t *wcscat( wchar_t *dest, const wchar_t *src );
(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 末尾的空终止符。产生的宽字符串是空终止的。若目标数组对于 srcdest 的内容以及终止空宽字符不够大,则行为未定义。若字符串重叠,则行为未定义。
2)(1),除了它可用未指定值破坏目标数组的剩余部分(从最后写入的宽字符到 destsz ),以及在运行时检测下列错误,并调用当前安装的约束处理函数:
  • srcdest 为空指针
  • destsz 为零或大于 RSIZE_MAX/sizeof(wchar_t)
  • dest 的首 destsz 个宽字符中无空终止符
  • 会出现截断( dest 末尾的可用空间不能适应 src 的每个宽字符,包括空终止符)
  • 源与目标字符串间会出现重叠
同所有边界检查函数, wcscat_s 仅若实现定义了 __STDC_LIB_EXT1__ ,且用户在包含 wchar.h 前定义 __STDC_WANT_LIB_EXT1__ 为整数常量 1 才保证可用。

参数

dest - 指向要后附到的空终止宽字符串的指针
src - 指向作为复制来源的空终止宽字符串的指针
destsz - 要写入的最大字符数,典型地为目标缓冲区的大小

返回值

1) 返回 dest 的副本。
2) 成功时返回零。错误时返回非零。错误时,亦写入 L'\0'dest[0] (除非 dest 为空指针,或 destsz 为零或大于 RSIZE_MAX/sizeof(wchar_t) )。

示例

#include <wchar.h> 
#include <stdio.h>
#include <locale.h>
 
int main(void) 
{
    wchar_t str[50] = L"Земля, прощай.";
    wcscat(str, L" ");
    wcscat(str, L"В добрый путь.");
    setlocale(LC_ALL, "en_US.utf8");
    printf("%ls", str);
}

输出:

Земля, прощай. В добрый путь.

引用

  • C11 标准(ISO/IEC 9899:2011):
  • 7.29.4.3.1 The wcscat function (第 432 页)
  • K.3.9.2.2.1 The wcscat_s function (第 642-643 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.24.4.3.1 The wcscat function (第 378 页)

参阅

(C95)(C11)
将一定量宽字符串从一个宽字符串后附到另一个
(函数)
连接两个字符串
(函数)
(C95)(C11)
将一个宽字符串复制给另一个
(函数)