Loose-Info.com

Last Update 2019/12/24


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}