美文网首页
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函数实现

  • memcpy函数的实现

    1.按1个字节拷贝(1)不要直接使用形参,要转换成char*(2)目标地址要实现保存(3)要考虑源和目标内存重叠的...

  • 数组拷贝函数

    memcpy 函数原型:void *memcpy(void *dest, const void *src, siz...

  • 2018-05-17 pat1028

    更深入了学习了strcmp() 函数 学到了一个新的函数,也就是memcpy()。函数原型 void memcpy...

  • memcpy

    memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝...

  • 个人笔记 - Memcpy

    1.定义 memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位...

  • memcpy与memmove的区别

    memcpy和memmove都是C语言的库函数,相比于strcpy和strncpy只能拷贝字符串数组,memcpy...

  • memcpy memmove 函数

    memcpy函数 函数原型 功能:由src指向地址为起始地址的连续 size个字节的数据复制到以dest指向地址为...

  • C语言之memcpy()函数用法

    函数原型 void *memcpy(void*dest, const void *src, size_t n...

  • 总结:头文件cstring函数的用法(original)

    一.复制类(cpy) (1)memcpy 函数原型: 用法:可与用于转移数据 (2)memmove 函数原型: 基...

网友评论

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

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