wmemmove
wmemmove, wmemmove_s
在头文件 | | |
---|---|---|
wchar_t * wmemmove(wchar_t * dest,const wchar_t * src,size_t count); | (1) | (自C95以来) |
errno_t wmemmove_s(wchar_t * dest,rsize_t destsz,const wchar_t * src,rsize_t count); | (2) | (自C11以来) |
1)count
将由src
指向的宽字符数组中的完全连续的宽字符复制到指向的宽字符数组dest
。如果count
为零,则该功能不执行任何操作。数组可能重叠:复制发生,就好像宽字符被复制到临时宽字符数组,然后从临时数组复制到dest
。
2)与(1)相同,只是在运行时检测到以下错误并调用当前安装的约束处理函数:
src
或者dest
是空指针
作为所有边界检查函数,wmemmove_s
只有在被__STDC_LIB_EXT1__
实现定义__STDC_WANT_LIB_EXT1__
并且1
在包含之前用户定义为整数常量时才能保证可用wchar.h
。
参数
dest | - | 指向要复制到的宽字符数组的指针 |
---|---|---|
src | - | 指向要复制的宽字符数组的指针 |
destsz | - | 要写入的最大宽字符数(目标缓冲区的大小) |
count | - | 要复制的宽字符数 |
返回值
1)返回一份副本 dest
2)成功时返回零,错误时返回非零值。此外,在错误,填满整个dst
直至并包括不dst+dstsz
具有空宽字符,L'\0'
(除非dest
为空或destsz
大于RSIZE_MAX/sizeof(wchar_t)
)
注意
该函数不区分语言环境,不关注wchar_t
其复制的对象的值:复制空值以及无效字符。
示例
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(void)
{
setlocale(LC_ALL, "en_US.utf8"
wchar_t str[] = L"αβγδεζηθικλμνξοπρστυφχψω";
printf("%ls\n", str
wmemmove(str+4, str+3, 3 // copy from [δεζ] to [εζη]
printf("%ls\n", str
}
输出:
αβγδεζηθικλμνξοπρστυφχψω
αβγδδεζθικλμνξοπρστυφχψω
参考
- C11标准(ISO/IEC 9899:2011):
另请参阅
memmovememmove_s(C11) | 移动一个缓冲区到另一个(功能) |
---|---|
wmemcpywmemcpy_s(C95)(C11) | 在两个非重叠数组之间复制一定数量的宽字符(函数) |
| 用于wmemmove的C ++文档