C言語例文集


 memmove()    メモリ領域を上書きする

ヘッダ string.h
書式 void *memmove(void *dest, const void *src, size_t n);
引数 dest … 上書き先のメモリのポインタ
src … 上書き元のメモリのポインタ
n … 上書きするバイト数
戻り値 destのポインタ
解説 メモリ領域srcの先頭からnバイトをメモリ領域destに上書きする関数。
memcpy()と機能は同じであるが、memmove()はコピー元のメモリ領域とコピー先のメモリ領域が重なっても問題ない。


<サンプルプログラム>

/****************************************************************************/
#include<stdio.h>
#include<string.h>

#define BUF_SIZE 16

int main()
{
    // 変数定義
    char buf1[BUF_SIZE];
    char buf2[BUF_SIZE];

    // 変数初期化
    memset(buf1, '\0', BUF_SIZE);
    memset(buf2, '\0', BUF_SIZE);

    // メモリ領域を特定の文字で埋める
    memset(buf1, 'b', 4);  // buf1の最初の4バイトをaにする
    memset(buf1, 'a', 2);  // buf1の最初の2バイトをbにする

    // 配列の内容を表示
    printf("配列の要素を表示(コピー前)。\n");
    printf("buf1:%s\n", buf1);
    printf("buf2:%s\n", buf2);

    // メモリを上書きする
    memmove(buf2, buf1, 3);  // buf1の先頭3バイトをbuf2に上書きする
    memmove(&buf1[2], &buf1[0], 3);  // buf1の先頭3バイトをbuf1の3バイト目に上書きする

    // 配列の内容を表示
    printf("配列の要素を表示(コピー後)。\n");
    printf("buf1:%s\n", buf1);
    printf("buf2:%s\n", buf2);

    return 0;
}

/****************************************************************************/

<実行結果>



<Topページ>

Copyright(c) 2010 , cgengor
このWebページの内容を無断で複製または転載することを禁じます。
このWebページの情報を利用することにより発生したいかなる損害について著作権保有者はいっさいの責任を負いません。