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; } } }
解説:
前: | 次: