C言語 memcpy関数の使い方

C logo C

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を使用する際は、コピー先のバッファオーバーフローが発生しないようにコピーサイズを指定する必要があります。

コメント

タイトルとURLをコピーしました