strcpy实现,但是与系统的strcpy有出入,待解决。。。

void* my_memcpy(void* dst,const void* src,unsigned int count)
{
    assert(dst);
    assert(src);
    void* ret=dst;
    if(dst<=src || (char*)dst >= ((char*)src+count)) //源地址和目的地址不重叠,低字节向高字节拷贝
    {
        while(count--)
        {
            *(char*)dst++ = *(char*)src++;
        }
    }else  //源地址和目的地址重叠,高地址向低地址拷贝
    {
        dst=(char*)dst+count-1;
        src=(char*)src+count-1;
        while(count--)
        {
            *(char*)dst--  = *(char*)src--;
        }
    }
    return ret;
}

char*  my_strcpy(char* dst,const char* src)
{
    assert(dst!=NULL);
    assert(src!=NULL);
    char* cp=dst;

    int length=strlen(src)+1;
    my_memcpy(dst,src,length);

    return cp;

}

int main()
{
    char str[10]="abcdefg";
    char des[4]="";
     //cout<     cout<     cout<

    return 0;
}

 

你可能感兴趣的:(C++)