C言語編 標準ライブラリのリファレンス wmemcpy

先頭へ戻る

wmemcpy関数

概要 あるメモリアドレスを起点に、一定の文字数を別のメモリアドレスへコピーする。
ヘッダ wchar.h
形式 wchar_t* wmemcpy(wchar_t* s1, const wchar_t* s2, size_t size);
引数 s1 コピー先の先頭のメモリアドレス。
s2 コピー元の先頭のメモリアドレス。
size コピーする文字数。
戻り値 s1 が返される。
詳細 基本的な意味は wcscpy関数と変わらないが、ヌル文字によって打ち切られることがない。
注意 コピー先の範囲と、コピー元の範囲が重なり合っている場合の結果は未定義である。重なり合う場合には、wmemmove関数を使えば良い。
この要件の違いは、C99以降では、wmemcpy関数の仮引数が restrict であるのに対し、wmemmove関数は restrict でないことで明確になっている。
使用例
#include <stdio.h>
#include <wchar.h>

int main(void)
{
    wchar_t s1[] = L"abcdefg";
    wchar_t s2[] = L"xyz";

    wprintf( L"%ls\n", wmemcpy( s1, s2, sizeof(s2)/sizeof(s2[0])-1 ) );

    return 0;
}

実行結果:

xyzdefg
関連 コピー先範囲とコピー元範囲が重なり合う場合は、wmemmove関数を使う。ワイド文字列のコピーならば、wcscpy関数wcsncpy関数が使える。
また、文字をマルチバイト文字とみなして同様の処理を行う memcpy関数が存在する。
解説章


参考リンク

更新履歴

'2018/4/20 全体的に文章を見直し修正。C99 の restrict について追記。

'2018/2/22 「サイズ」という表記について表現を統一。 型のサイズ(バイト数)を表しているところは「大きさ」、要素数を表しているところは「要素数」。

'2018/1/22 新規作成。





標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ


このエントリーをはてなブックマークに追加
rss1.0 取得ボタン RSS