ヘッダ: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;
}
/****************************************************************************/
<実行結果>