Last Update 2012/07/05
バイト文字列をコピーします。終端文字「\0」の付加は行われません。
バイト文字列が重複していてもコピー可能です。
バイト文字列が重複していてもコピー可能です。
戻り値1 = memmove( 引数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("[1]コピー前 st1: {%s %s}\n", st1.str1, st1.str2);
struct struct_test *s_temp = (struct struct_test *)memmove(&st1, &st2, sizeof(st1));
printf("[1]コピー後 st1: {%s %s}\n", st1.str1, st1.str2);
printf("[1]戻り値 s_temp {%s %s}\n\n", s_temp->str1, s_temp->str2);
printf("[2]コピー前 st1: {%s %s}\n", st1.str1, st1.str2);
char *pc1 = &st1.str1[0];
char *pc2 = &st1.str1[10];
s_temp = (struct struct_test *)memmove(pc1, pc2, sizeof(st1.str1));
printf("[2]コピー後 st1: {%s %s}\n", st1.str1, st1.str2);
printf("[2]戻り値 s_temp {%s %s}\n\n", s_temp->str1, s_temp->str2);
return 0;
}
実行結果
[1]コピー前 st1: {abcde 123456}
[1]コピー後 st1: {12345 abcdef}
[1]戻り値 s_temp {12345 abcdef}
[2]コピー前 st1: {12345 abcdef}
[2]コピー後 st1: {abcdef abcdef}
[2]戻り値 s_temp {abcdef abcdef}