zoukankan      html  css  js  c++  java
  • C程序

    /*

    不适用C库函数,只是用 C 语言实现函数 void* memcpy( void *dst, const void *src, size_t len )
    memmove 函数的功能是拷贝 src 所指的内存内容前 n 个字节到 dst 所指的地址上。
    简单循环拷贝即可,但是这道题要深究起来很多问题,比如内存区域是重叠的,有可能左边重叠也可能右边重叠。
    */

    #include <stdio.h>
    #include <stdlib.h>
    void* memcpy( void *dst, const void *src, size_t len )
    {
    if (NULL == dst || src == NULL)
    {
    return NULL;
    }
    char *pDst = (char *)dst;
    const char *ptSrc = (char *)src;

    // pDst开始地址,处于ptSrc中,那么不能从头开始拷贝,而是从尾部开始拷贝
    if (pDst > ptSrc && pDst < ptSrc + len)
    {
    for (int i = len - 1; i >= 0; i--)
    {
    pDst[i] = ptSrc[i];
    }
    }
    else //其他情况是从开始部位开始拷贝
    {
    for (size_t i = 0; i < len; i++)
    {
    pDst[i] = ptSrc[i];
    }
    }
    return dst;
    }

    int main()
    {
    char SrcBuf[] = "jfjwfjjsjfljsfj";
    char SrcBuf2[100] = {0};
    char *p = SrcBuf + 2;
    memcpy(SrcBuf, p, 4);
    printf("%s ", SrcBuf);
    system("pause");
    return 0;
    }

  • 相关阅读:
    C语言|博客作业08
    C语言|博客作业04
    C语言|博客作业02
    C语言|博客作业06
    C语言|博客作业03
    第一周作业
    C语言|博客作业05
    C语言|博客作业07
    C语言|博客作业09
    为什么get比post更快
  • 原文地址:https://www.cnblogs.com/polo/p/9908914.html
Copyright © 2011-2022 走看看