C

wcscpy

wcscpy, wcscpy_s

在头文件中定义
(1)
wchar_t * wcscpy(wchar_t * dest,const wchar_t * src);(自C95以来)(直到C99)
wchar_t * wcscpy(wchar_t * restrict dest,const wchar_t * restrict src);(自C99以来)
errno_t wcscpy_s(wchar_t * restrict dest,rsize_t destsz,const wchar_t * restrict src);(2)(自C11以来)

1)将指向的宽字符串src(包括终止空宽字符)复制到指向的宽字符数组dest。如果dest数组不够大,行为是不确定的。如果字符串重叠,则行为未定义。

2)与(1)相同,除了可以用未指定的值来摧毁目标数组的其余部分,并且在运行时检测到以下错误并调用当前安装的约束处理函数:

  • src或者dest是空指针

与所有边界检查的函数一样,wcscpy_s只有__STDC_LIB_EXT1__在实现定义并且用户在包含之前定义__STDC_WANT_LIB_EXT1__为整数常量时1才能保证可用wchar.h

参数

dest-指向要复制到的宽字符数组的指针
src-指向要从中复制的以空字符结尾的宽字符串
destsz-最大写入字符数,通常是目标缓冲区的大小

返回值

1)返回一份副本 dest

2)在成功时返回零,错误时返回非零值。此外,在错误,写入L'\0'dest[0](除非dest是空指针或destsz为零或大于RMAX_SIZE / sizeof(wchar_t))。

示例

#include <wchar.h> #include <stdio.h> #include <locale.h> int main(void) { wchar_t *src = L"犬 means dog"; // src[0] = L'狗' ; // this would be undefined behavior wchar_t dst[wcslen(src) + 1]; // +1 to accommodate for the null terminator wcscpy(dst, src dst[0] = L'狗'; // OK setlocale(LC_ALL, "en_US.utf8" printf("src = %ls\ndst = %ls\n", src, dst }

输出:

src = 犬 means dog dst = 狗 means dog

参考

  • C11标准(ISO/IEC 9899:2011):

另请参阅

wcsncpywcsncpy_s(C95)(C11)将一定数量的宽字符从一个字符串复制到另一个字符串(函数)
wmemcpywmemcpy_s(C95)(C11)在两个非重叠数组之间复制一定数量的宽字符(函数)
strcpystrcpy_s(C11)将一个字符串复制到另一个(函数)

| 用于wcscpy |的C ++文档