void my_memmove(char *dst, const char *src, int n)
{
if( dst < src ) { // dst が src より若いアドレスの場合
for(int i = 0; i < n; ++i) {
*dst++ = *src++;
}
} else if( dst > src ) { // src が dst より若いアドレスの場合
dst += n; // 転送データ末尾に移動
src += n; // 転送データ末尾に移動
for(int i = 0; i < n; ++i) {
*--dst = *--src;
}
}
}
解説:
前: | 次: