memcpy関数を使用して、メモリブロックをコピーする方法について解説します。
構文
#include <string.h>
void *memcpy(void *addr1, const void *addr2, size_t n);
第1引数 – addr1: コピー先の先頭アドレス
第2引数 – addr2: コピー元の先頭アドレス
第3引数 – n: コピーするサイズ
戻り値 – addr1( コピー先の先頭アドレス )
サンプルプログラム
#include <stdio.h>
#include <string.h>
int main(void)
{
char str1[16] = "Yamada Taro";
char str2[16] = "Hanako";
printf("コピー前: %s\n", &str1[0]);
memcpy(&str1[7], &str2[0], (size_t)6);
printf("コピー後: %s\n", &str1[0]);
return 0;
}
■出力結果
コピー前: Yamada Taro
コピー後: Yamada Hanako
補足情報
memcpyを使用する際は、コピー先のバッファオーバーフローが発生しないようにコピーサイズを指定する必要があります。
コメント