博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
my memmove 实现
阅读量:3525 次
发布时间:2019-05-20

本文共 706 字,大约阅读时间需要 2 分钟。

#include 
#include
void my_memmove(void* pDst,const void *pSrc,size_t size){ assert(pDst != NULL && pSrc != NULL); /* * pDst 和pSrc共享同一块内存区域 */ if((pSrc < pDst) && ((char*)pSrc + size > (char*)pDst)) { /* * 此时需要从尾部开始拷贝 * 把pSrc 和pDst 都指向尾部 */ char* pstrSrc = (char*)pSrc + size - 1; char* pstrDst = (char*)pDst + size - 1; /* 从尾部向头开始拷贝*/ while(size--) *pstrDst-- = *pstrSrc--; } else/* pDst 和pSrc 没有共享同一块内存区域*/ { char* pstrSrc = (char*)pSrc; char* pstrDst = (char*)pDst; /* 从头向尾部开始拷贝*/ while(size--) *pstrDst++ = *pstrSrc++; }}int main(){ char buf[1024] = {0}; char *str = "123456789abcdefg"; printf("buf = %s\n",buf); my_memmove(buf,str + 6,3); printf("buf = %s\n",buf);}

转载地址:http://rxuhj.baihongyu.com/

你可能感兴趣的文章
Scala-流程控制
查看>>
Scala-面向对象后章
查看>>
iOS蓝牙原生封装,助力智能硬件开发
查看>>
iOS 代码的Taste(品位)
查看>>
iOS开发代码规范
查看>>
iOS组件化实践(基于CocoaPods)
查看>>
【iOS学习】RxSwift从零入手 - 介绍
查看>>
数据结构之栈
查看>>
Elastic Stack简介
查看>>
关于deepin系统安装design compiler的问题解答
查看>>
Java Agent简介及使用Byte Buddy和AspectJ LTW监控方法执行耗时
查看>>
记录一下最近的学习经历
查看>>
hadoop3.0+spark2.0两台云服务器集群环境配置。
查看>>
记第一次面试经历
查看>>
网站实现qq登录(springboot后台)
查看>>
简单的用户头像修改功能(springboot后台)
查看>>
springboot+mybatis实现分页
查看>>
leetcode332. 重新安排行程
查看>>
为什么局域网网段不同不能通信?
查看>>
itchat微信助手,kaggle 电影数据集分析,基于内容的电影推荐
查看>>