C 参考手册

定义于头文件 <wchar.h>
wchar_t *wmemset( wchar_t *dest, wchar_t ch, size_t count );
(C95 起)

复制宽字符 chdest 所指向的宽字符数组(或兼容类型的整数数组)的首 count 个宽字符。

若出现溢出,则行为未定义。

count 为零,则函数不做任何事。

参数

dest - 指向要填充的宽字符数组的指针
ch - 填充的宽字符
count - 要填充的宽字符数

返回值

返回 dest 的副本

注意

此函数不受本地环境影响,且不注意其写入的 wchar_t 对象的值:亦写入空字符还有非法宽字符。

示例

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
 
int main(void)
{
    wchar_t ar[10] = L"1234567890"; // 数组中无尾随空字符
    wmemset(ar, L'\U0001f34c', 5); // 以 ???? 替换 [12345]
    wmemset(ar+5, L'蕉', 5); // 以 蕉 替换 [67890]
 
    setlocale(LC_ALL, "en_US.utf8");
    for(size_t n = 0; n < sizeof ar/sizeof *ar; ++n)
        putwchar(ar[n]);
    putwchar(L'\n');
}

输出:

????????????????????蕉蕉蕉蕉蕉

引用

  • C11 standard (ISO/IEC 9899:2011):
  • 7.29.4.6.2 The wmemset function (p: 439)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.24.4.6.2 The wmemset function (p: 385)

参阅

以字符填充缓冲区
(函数)
在两个不重叠的数组间复制一定数量的宽字符
(函数)