#include <stdio.h>
#include <string.h>
// 後ろからコピーする
void memrcpy(void *d, void *s, unsigned int len){
while(len--) ((char *)d)[len] = ((char *)s)[len];
}
void hello1(){
char hello[128] = "Hello World!"; // 十分過ぎる領域を持つ配列
// 6文字ずらしてコピーして"Hello Hello World!"になることを期待
memcpy(&hello[6], &hello[0], 13);
puts(hello); // だめ
}
void hello2(){
char hello[128] = "Hello World!";
// 6文字ずらしてコピーして"Hello Hello World!"になることを期待
memrcpy(&hello[6], &hello[0], 13); // 独自のコピーを使う
puts(hello); // OK
}
void main(){
hello1();
hello2();
}