この関数の目的
memcpy()は、オブジェクトをコピーする。
定義
#include <string.h> void *memcpy(void *s1, const void *s2, size_t n);
働き
この関数は、 s2 が指すオブジェクトの最初の n 文字を s1 が指すオブジェクトに複写する。 重複するオブジェクト間で転写が行われた場合の動作は未定義である。
返り値は s1 の値である。
解説
重複するオブジェクト間での転写は、たとえば配列を1要素分ずらしたい時などに発生する。
char str[6] = "hello"; memcpy(&str[0], &str[1], 5); /* 未定義の動作 */
このような場合は memmove() を使用する。