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

先頭へ戻る

wcsncpy関数

概要 ワイド文字列を指定文字数以下だけコピーする。
ヘッダ wchar.h
形式 wchar_t* wcsncpy(wchar_t* s1, const wchar_t* s2, size_t n);
引数 s1 コピー先の配列。
s2 コピー元の文字列。
n コピーする最大文字数。
戻り値 s1 を返す。
詳細 s1 へ s2 の内容をヌル文字を含めて、n文字だけコピーする。s1 の末尾へヌル文字を付加する行為は行われない。
注意 s1 が指す配列の大きさが、コピーされる文字数に満たないとバッファオーバーフローとなる。この結果は未定義である。
s1 と s2 の領域が部分的に重なり合っているとき、動作は未定義である。
s2 の先頭から n文字以内にヌル文字が現れない場合、コピー結果にもヌル文字が現れないことに最大級の注意を払わなければならない。
使用例
#include <stdio.h>
#include <wchar.h>

int main(void)
{
    wchar_t s1[10];
    wchar_t s2[10];

    wprintf( L"%s\n", wcsncpy( s1, L"abcde", 7 ) );
    wprintf( L"%s\n", wcsncpy( s2, L"abcde", 3 ) );  /* s2 の末尾に L'\0' が付かないので危険 */

    return 0;
}

実行結果:

abcde
abcフフフフフフフフフフフフフフフフフabcde
関連 終端文字を無視してコピーを行うために、wmemcpy関数、あるいは wmemmove関数を使える。
マルチバイト文字列版の、strncpy関数が使える。
解説章


参考リンク

更新履歴

'2018/4/20 全体的に文章を見直し修正。

'2018/1/22 新規作成。





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

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

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

Programming Place Plus のトップページへ


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