memmove.c 1.16 KB
/*
=============================================================================
        Copyright (C) 1997-1999 NINTENDO Co.,Ltd.
        
        $RCSfile: memmove.c,v $
        $Revision: 1.1.1.1 $
        $Date: 2002/10/30 02:07:09 $
=============================================================================
関数名:memmove
-----------------------------------------------------------------------------
書式:  #include <string.h>
        void *memmove(void *dest, const void *src, size_t count);
引数:  dest コピー先のポインタ
        src コピー元のポインタ
        count コピーするバイト数
戻り値:コピー先 dest のポインタ
説明:  scr の内容を dest に count 分だけコピーする。
        コピー元の領域とコピー先の領域が重なっていても正しくコピーされる。
-----------------------------------------------------------------------------
*/
#include    "string.h"

void *memmove(void *dest, const void *src, size_t count)
{
    char    *d = (char *)dest, *s = (char *)src;
    if (d == s) return  dest;
    if (d < s)  {
        while(count--)  *d++ = *s++;
    }   else    {
        d += count-1;
        s += count-1;
        while(count--)  *d-- = *s--;
    }
    return  dest;
}