Namespaces
Variants

wmemset

From cppreference.net
< c ‎ | string ‎ | wide
定義先ヘッダ <wchar.h>
wchar_t * wmemset ( wchar_t * dest, wchar_t ch, size_t count ) ;
(C95以降)

ワイド文字 ch を、 dest が指すワイド文字配列(または互換性のある型の整数配列)の先頭 count 個の各ワイド文字にコピーします。

オーバーフローが発生した場合、動作は未定義です。

count がゼロの場合、この関数は何も行いません。

目次

パラメータ

dest - ワイド文字配列を埋めるためのポインタ
ch - 埋め込み用ワイド文字
count - 埋め込むワイド文字の数

戻り値

dest のコピーを返します

注記

この関数はロケールに依存せず、書き込む wchar_t オブジェクトの値に注意を払いません:ヌル文字および無効なワイド文字も同様に書き込まれます。

#include <locale.h>
#include <stdio.h>
#include <wchar.h>
int main(void)
{
    wchar_t ar[10] = L"1234567890"; // 配列末尾にnull終端なし
    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');
}

出力:

🍌🍌🍌🍌🍌蕉蕉蕉蕉蕉

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 7.29.4.6.2 wmemset関数 (p: TBD)
  • C17規格 (ISO/IEC 9899:2018):
  • 7.29.4.6.2 wmemset関数 (p: TBD)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.29.4.6.2 wmemset関数 (p: 439)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.24.4.6.2 wmemset関数 (p: 385)

関連項目

バッファを文字で埋める
(関数)
2つの重ならない配列間で指定された量のワイド文字をコピーする
(関数)