wcscpy_s
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 ++文档