• 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. BootStrap--from 表单

    1 垂直表单(默认) 2 内联表单 3 水平表单 使用 class .sr-only,您可以隐藏内联表单的标签. 垂直或基本表单 基本的表单结构是 Bootstrap 自带的,个别的表单控件自动接收一 ...

  2. 解决mongodb TypeError: Cannot read property 'XXX' of null 问题

    有时候我们的字段里的数据为空而去查询就会报错. 比如以下形式: “cartList”:[] “cartList”:[{}] “cartList”:{} “cartList”:null 在查询的时候加上 ...

  3. 记intel杯比赛中各种bug与debug【其二】:intel caffe的使用和大坑

    放弃使用pytorch,学习caffe 本文仅记录个人观点,不免存在许多错误 Caffe 学习 caffe模型生成需要如下步骤 编写network.prototxt 编写solver.prototxt ...

  4. 前端之CSS介绍

    CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). CSS的语法 CSS语 ...

  5. 首家5G体验厅在深圳建成

    日前,深圳移动卓越时代营业厅推出5G全方位体验活动,让市民亲身感受5G时代到来.据悉,十大5G展示项目生动展现移动5G带来的生活巨变与产业升级,为5G发展汇聚各界力量加速创新落地. 现场有市民表示,5 ...

  6. Laravel API 允许跨域访问

    服务器A请求服务器B的接口,那么一般会出现跨域问题.全解跨域请求处理办法 XMLHttpRequest cannot load http://api.console.vms3.com/api/user ...

  7. 9 hbase源码系列(九)StoreFile存储格式

    hbase源码系列(九)StoreFile存储格式    从这一章开始要讲Region Server这块的了,但是在讲Region Server这块之前得讲一下StoreFile,否则后面的不好讲下去 ...

  8. Iocomp控件之数字显示【图文】

    Iocomp关于数字显示有自己的一套方案.并且效果非常棒哦 效果图: 插入控件: 默认效果: 随意改动属性后: 加入变量 调用函数: ); 效果图:

  9. Deferred Rendering(三)反锯齿和半透明问题

    Deferred 框架下的AA 前面说过Deferred 框架下无法使用硬件AA.这句话不严谨: Deferred Shading在G-Buffer之后,物体几何信息全被抛弃了,导致兴许每一个像素都独 ...

  10. BOOST_CLASS_EXPORT

    用基类的指针去转存派生类时除了上一篇boost::serialization 用基类指针转存派生类(错误多多,一波三折)之外.还有还有一种更简单的方法: 用BOOST_CLASS_EXPORT宏. 以 ...