ViVi Home > 技術文書 > ポインタ入門 > 基礎演習問題> memmove


 

 

C/C++ ポインタ入門 > 文字列関数 > memmove
Nobuhide Tsuda
Nov-2013

文字列コピー:void my_memmove(char *dst, const char *src, int n)

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;
        }
    }
}

解説:

 


前: | 次: