• memcpy

     #include <stdio.h>
    #include <stdlib.h>
    #include <memory.h> void * mymemcpy(void* _Dst, void const* _Src, size_t _Size)
    {
    if (_Dst == NULL || _Src == NULL)
    {
    return NULL;
    } //转化成char类型,一次前进一个字节
    char *dst = _Dst;
    char *src = _Src; for (int i = ; i < _Size; i++)
    {
    dst[i] = src[i];
    } return _Dst;
    } void main()
    {
    int a[] = { ,,,,,,,,, };
    int *p = malloc(sizeof(int) * );
    int *tmp = mymemcpy(p, a, ); for (int i = ; i < ; i++)
    {
    printf("%d\n" ,p[i]);
    } char str[] = "hello world";
    char mystr[];
    mymemcpy(mystr, str, strlen(str) + ); printf("%s\n", mystr); system("pause");
    }
  • memset
     void *mymemset(void *_Dst, int _Val, size_t _Size)
    {
    if (_Dst == NULL || _Val == NULL)
    {
    return;
    } for (int i = ; i < _Size; i++)
    {
    ((char *)_Dst)[i] = _Val;
    } return _Dst;
    }
  • memmove
     void * mymemmove(void *_Dst, const void *_Src, size_t _Size)
    {
    if (_Dst == NULL || _Src == NULL)
    {
    return NULL;
    } void *psrc = malloc(_Size);//分配内存
    memcpy(psrc, _Src, _Size);
    memcpy(_Dst, psrc, _Size);
    free(psrc);
    return _Dst;
    }
  • memicmp(比较指定字符串前n个字符串)
     int mymemicmp(const void *_Buf1, const void *_Buf2, size_t _Size)
    {
    //保存变量
    char *buf1 = _Buf1;
    char *buf2 = _Buf2; //结束标识
    char *end = buf1 + _Size; while ((*buf1 == *buf2) && buf1 != end)
    {
    buf1++;
    buf2++;
    } if (buf1 == end)
    {
    return ;
    }
    else
    {
    return *buf1 - *buf2 > ? : -;
    }
    }
  • memchr(寻找一个字符串中是否有指定字符)
     void *mymemchr(void *start, char ch, int maxlength)
    {
    char *p = NULL;
    for (int i = ; i < maxlength; i++)
    {
    if (((char *)start)[i] == ch)
    {
    p = (char *)start + i;
    break;
    }
    }
    return p;
    }
  • memccpy(复制n个字符,遇到指定值退出)
     void * mymemccpy(void * _Dst, const void *_Src, int _Val,size_t _MaxCount)
    {
    char *dst = _Dst;
    char *src = _Src; for (int i = ; i < _MaxCount; i++)
    {
    dst[i] = src[i];
    if (dst[i] == _Val)
    {
    break;
    }
    }
    }

41.内存函数实现(memcpy,memset,memmove,memicmp,memchr.memccpy)的更多相关文章

  1. [整理]内存重叠之memcpy、memmove

    函数原型: void *memcpy( void *dest, const void *src, size_t count ); void *memmove( void* dest, const vo ...

  2. memcpy、memmove、memset及strcpy函数实现和理解

    memcpy.memmove.memset及strcpy函数实现和理解 关于memcpy memcpy是C和C++ 中的内存拷贝函数,在C中所需的头文件是#include<string.h> ...

  3. C语言-内存函数的实现(一)之memcpy

    C语言中的内存函数有如下这些 memcpy memmove memcmp memset 下面看看memcpy函数 memcpy 我们想想,之前有那个字符串拷贝的函数,即strcpy函数.都有拷贝的函数 ...

  4. memcpy、memmove、memset、memchr、memcmp、strstr详解

    第一部分 综述 memcpy.memmove.memset.memchr.memcmp都是C语言中的库函数,在头文件string.h中.memcpy和memmove的作用是拷贝一定长度的内存的内容,m ...

  5. C语言-内存函数的实现(二)之memmove

    C语言中的内存函数有如下这些 memcpy memmove memcmp memset 下面看看memmove函数 memmove 为什么会需要memmove函数? int main() { int ...

  6. strcpy()、memcpy()、memmove()、memset()的内部实现

    一直想知道 strcpy().memcpy().memmove().memset()的内部实现 strcpy(), 字符串拷贝. char *strcpy(char *strDest, const c ...

  7. c++中内存拷贝函数(C++ memcpy)详解

    原型:void*memcpy(void*dest, const void*src,unsigned int count); 功能:由src所指内存区域复制count个字节到dest所指内存区域. 说明 ...

  8. C语言标准库函数memcpy和memmove的区别以及内存重叠问题处理

    ①memcpy()和memmove()都是C语言中的标准库函数,定义在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下: void *memcpy(void *dst, cons ...

  9. 关于memcpy和memmove的一点说明

    今天看到书上降到memcpy和memmove的区别才突然发现原来两者之间有如此区别,以前只知道这两个函数是 实现同样的功能,没有接触到其不同. memcpy和memmove在MSDN的定义如下: 从两 ...

随机推荐

  1. 洛谷P3195 [HNOI2008]玩具装箱TOY(单调队列优化DP)

    题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具, ...

  2. CUDA笔记13

    在新的环境上用CUTIL的时候,出现了问题.无法解析的外部符号 __imp_cutCheckCmdLineFlag 问题描述: kernel.cu.obj : error LNK2019: 无法解析的 ...

  3. 学以敩(xiao,效)为敎,以见为觉。醒悟、明白。

    学以敩(xiao,效)为敎,以见为觉.醒悟.明白 上半部分中间的爻是算筹,在古时被用来记数和计算:两边是手,既表示手把手传授,双手也表恭敬与专注:中间是一座房子,表示教学和学习的地方,这个地方不用豪华 ...

  4. javascript实现多线程 Concurrent.Thread.js

    在这次我的项目中,因为前端要检测硬件加载并识别,再向后台请求发送数据,然后再返回的相应的配置文件!在这过程,要好时好几秒钟,严重影响体验效果,所以在网上靠看的方案,运用多线程去处理,这效果明显改善! ...

  5. python、js 时间日期模块time

    python 参考链接:https://www.runoob.com/python/python-date-time.html 时间戳 >>> print(time.time())# ...

  6. 安装虚拟机(VM)(一)

    原创作品,允许转载,转载时请务必声明作者信息和本声明.  https://www.cnblogs.com/zhu520/p/10728248.html 本人小白,有错指出.谢谢! 一:安装虚拟机前奏 ...

  7. 题解 BZOJ4919 【大根堆】

    题面:传送门. 老师说今天要考一道线段树合并,然后...然后这道题我就GG了.(当然可以用线段树合并写,只是比较复杂) 有人赛时想了个贪心,然后被机房巨佬hack了,结果在hack的过程中巨佬想出了正 ...

  8. Eclipse反编译插件 Enhanced Class Decompiler

    因为jar包中的源码都是经过反编译的,所以需要安装插件才能查看到源码,此处介绍的是 Enhanced Class Decompiler 插件. 打开Eclipse,Help --> Eclips ...

  9. DBCP2配置详细说明(中文翻译)

    http://blog.csdn.net/kerafan/article/details/50382998 common-dbcp2数据库连接池参数说明 由于commons-dbcp所用的连接池出现版 ...

  10. 11 hbase源码系列(十一)Put、Delete在服务端是如何处理

    hbase源码系列(十一)Put.Delete在服务端是如何处理?    在讲完之后HFile和HLog之后,今天我想分享是Put在Region Server经历些了什么?相信前面看了<HTab ...