美文网首页
2020-09-04 memcpy函数实现

2020-09-04 memcpy函数实现

作者: 金珉锡_4bc1 | 来源:发表于2020-09-04 20:16 被阅读0次
    #include <stdio.h>
    
    /**
        memcpy函数实现
        void *memcpy(void *str1, const void *str2, size_t n)
        */
    void *Memcpy(void *str1, const void *str2, size_t n)
    {
        if(str1 == NULL || str2 == NULL || n <= 0){
            return NULL;
        }
    
        char *pstr1 = (char *)str1;
        char *pstr2 = (char *)str2;
    
        // 说明str1在str2中间,有内存重叠
        // 为了防止copy时不破坏str2,从后向前拷贝
        if(pstr1 > pstr2 && pstr1 < (pstr2 + n)){
            pstr1 += (n - 1);
            pstr2 += (n - 1);
    
            while(n--){
                *pstr1-- = *pstr2--;
            }
        }
        else{
            while(n--){
                *pstr1++ = *pstr2++;
            }
        }
    }
    
    int main()
    {
        char buf1[] = "hello, world!";
        char buf2[100];
    
        Memcpy(buf2, buf1, 5);
    
        printf("%s\n", buf2);
    
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:2020-09-04 memcpy函数实现

          本文链接:https://www.haomeiwen.com/subject/dvstektx.html