memmove

n バイトメモリブロックの移動

【書式】
#include <string.h>
void *memmove(void *buf1, const void *buf2, size_t n);

※ void * についてはこちらを参考

【説明】
buf1 の先頭から n 文字分 buf2 をコピーします。このとき、strcpy()と異なり空文字('\0')を付加することはありません。また、buf2 を単なるメモリブロックとして扱うため、途中に空文字('\0')を含んでいてもコピーを続けます。
buf1 と buf2 が重なっているときの動作は memcpy() では未定義ですが、このmemmove() では正しくコピー(つまり移動)が行われます。

【引数】
void *buf1 : コピー先のメモリブロック
const void *buf2 : コピー元のメモリブロック
size_t n : コピーバイト数

【戻り値】
buf1の値

【使用例】
#include        <stdio.h>
#include        <string.h>

int main(void)
{
        char str[] = "abcdefghijklmnopqrstu";
        
        printf("移動前:%s\n",str);
        
        memmove(str+5, str, 10);        /* 重複エリアのコピー */

        printf("移動後:%s\n",str);

        return 0;
}
【実行結果】
移動前:abcdefghijklmnopqrstu
移動後:abcdeabcdefghijpqrstu

戻る


banner
初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved