C言語例文集


 memcpy()    メモリ領域をコピーする

ヘッダ string.h
書式 void *memcpy(void *dest, const void *src, size_t n);
引数 dest … コピー先のメモリのポインタ
src … コピー元のメモリのポインタ
n … コピーするバイト数
戻り値 destのポインタ
解説 メモリ領域srcの先頭からnバイトをメモリ領域destにコピーする関数。
コピー元のメモリ領域とコピー先のメモリ領域が重なる場合の動作は保証されていないので注意する必要がある。メモリ領域が重なっても問題ない場合は、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);

    // メモリをコピーする
    memcpy(buf2, buf1, 3);  // buf1の先頭3バイトをbuf2にコピーする

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

    return 0;
}

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

<実行結果>



<Topページ>

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