TOP - C言語 - string.h - memcpy()

メモリ領域のコピーを行います。strcpy()と異なり、終端文字「\0」の付加は行いません。
コピー元とコピー先の領域が重なる可能性がある場合は動作が不定となるため、memmove()を使用します。

戻り値1 = memcpy(引数1 , 引数2 , 引数3)

戻り値1      : void *
               引数1へのポインタ
引数1, 引数2 : void *
               引数2で参照されるメモリ領域の内容を引数1で参照されるメモリ領域へコピーする
引数3        : size_t
               コピーの対象となるバイト数

(例)
#include <stdio.h>
#include <string.h>

struct struct_test
{
    char str1[10];
    char str2[20];
};

int main ()
{
    struct struct_test st1 = {"abcde", "123456"};
    struct struct_test st2 = {"12345", "abcdef"};

    printf("コピー前 st1: {%s %s}\n", st1.str1, st1.str2);
    struct struct_test *s_temp = (struct struct_test *)memcpy(&st1, &st2, sizeof(st1));
    printf("コピー後 st1: {%s %s}\n", st1.str1, st1.str2);
    printf("戻り値 s_temp {%s %s}\n", s_temp->str1, s_temp->str2);

    return 0;
}

実行結果
コピー前 st1: {abcde 123456}
コピー後 st1: {12345 abcdef}
戻り値 s_temp {12345 abcdef}


Copyright(C) 2006-2012 CLAYPOT. All Rights Reserved.