●内存拷贝函数memmove模拟实现 (操作的基本单位是字节,对类型不关心)
memmove本为标准库中的函数,现人为的实现其功能;
根据拷贝的地址大小的不同,分为从右向左拷贝和从左向右拷贝两种拷贝方式
代码如下:
void *my_memmove(void *dst,const void *src,size_t num)
{
assert(dst!=NULL);
assert(src!=NULL);
//根据所拷贝的字符串的位置分为两种情况:
//src的地址小于dst的地址和src的地址大于dst的地址
if( dst>src&&dst<src+num)
{
//类型根据具体的情况进行设置
const char*src_=(char*)src+num-1;
char*dst_=(char*)dst+num-1;
//从右向左进行拷贝
while(num>0)
{
*dst_=*src_;
dst_--;
src_--;
num--;
}
}
else
{
const char*src_=(char*)src;
char*dst_=(char*)dst;
//从左向右进行拷贝
while(num>0)
{
*dst_=*src_;
dst_++;
src_++;
num--;
}
}
}
int main()
{
char dst[32]="asdfghjkl";
int len=strlen(dst);
my_memmove(dst,dst+3,len);
printf("%s",dst);
return 0;
}
memmove(内存拷贝函数)模拟实现
原创
©著作权归作者所有:来自51CTO博客作者mb61cf0b2195f96的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:繁星闪烁 ,芳华似锦,走自己的路
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【C语言加油站】qsort函数的模拟实现
【C语言加油站】qsort函数的模拟实现本文详细介绍了使用冒泡排序的逻辑模拟实现可以排序任意类型数组的qsort函数……
C语言 qsort排序函数 冒泡排序 回调函数 void*指针 -
【C】内存函数及其模拟实现 —— memcpy | memmove | memcmp
用的比较少说实话,memcpy还是要注意一下。。。
c语言 #include i++ 字符串 -
模拟实现memset,memcpy,memmove函数
模拟实现memset,memcpy,memmove函数memset功能是将s所指向的某一
#include i++ 内存区域 -
C语言模拟实现memcpy,memmove函数
C语言模拟实现memcpy,memmove函数
C语言.memcpy.memmov -
模拟实现内存拷贝函数my_memcpy
1、重叠拷贝:把同一数列中的其中几个拷贝为同一数列的另外几个2、memcpy(存放位置,拷贝内容,多少字节);
memcpy memmove 模拟实现 强制类型转换 -
【C语言】memmove() 内存拷贝可重叠
本篇博客就来介绍下关于C语言常用的内存函数之memmove()函数。
#include 强制转换 #define -
memcpy函数和memmove函数的模拟实现与区别
memcpy函数和memmove函数的模拟实现与区别
memcpy函数和memmove函数的模 -
java TreeNode需要引入的库
说明看注释一、removeTreeNode/** * @param movable 处理时,是否移动其他节点 */ final void removeTreeNode(HashMap<K, V> map, Node<K, V>[] tab, boolean movable) { int n;
java TreeNode需要引入的库 红黑树 HashMap 删除节点 平衡调整