模拟实现memmove
memmove():将 num 字节的值从源所指向的位置复制到目标所指向的内存块。复制就像使用中间缓冲区一样进行,允许目标和源重叠。
当我们要模拟实现memmove函数时得考虑到字符未被移动而被其他字符覆盖
int main()
{int a1[10] = { 1,2,3,4,5,6,7,8,9,20 };int a2[5] = { 0 };int sz1 = sizeof(a1) / sizeof(a1[0]);my_memmove(a1, a1 + 2, 20);for (int i = 0; i < sz1; i++){printf("%d ", a1[i]);}return 0;
}
就比方说上面这段代码,我们要用my_memmove()获取我们想要得到的数组
3,4,5,6,7,6,7,8,9,20
但是如果原数组在移动时先将7覆盖5的话,那5这个数据便会缺失,使得我们的my_memmove()无法与memmove做到同样效果。
#include<stdio.h>
void* my_memmove(void* x, void* y, size_t mun)
{void* ret = x;if (x < y){while (mun--){*(char*)x = *(char*)y;x = (char*)x + 1;y = (char*)y + 1;}}else{while (mun--){*((char*)x + mun) = *((char*)y + mun);}}return ret;
}
所以可以分两种情况来进行数据移动,如上提供的代码一般。用一个参数mun控制移动数据的长度,移动量为地址*x与地址*y之间的距离量。倘若在同一组数组中,要移动数据的起始地址(*y)高于移动的末尾位置(*x),可以先从最终位置开始进行数据拷贝,在提供的数组中将*y的数据覆盖*x的数据;要移动数据的起始地址低于移动的最终位置,则将起始地址和最终位置都加上移动量,相当于从要移动的数据段的末尾开始拷贝数据
模拟实现memmove相关推荐
- 用c语言编程实现strcpy,用c语言.模拟实现strcpy,strcat,strcat,memcpy,memmove
1.模拟实现strcpy #include #include #include #include char *my_strcpy(char *dst, const char *src) { asser ...
- memcpy、memmove、memcmp、memset函数的使用说明和模拟实现
在前面的文章中,我已经对字符串函数进行了详细的介绍和模拟实现,今天,我来讲解另一类函数----------内存函数. 这里写目录标题 memcpy函数 memmove函数 memcmp函数 memse ...
- 《strcmp,strcpy,memcpy,memmove等函数模拟实现》
模拟实现常见字符串函数比如:strcmp,strcpy,memcpy,memmove等函数 1.模拟实现memcpy函数 2.模拟实现memmove函数 3.模拟实现strstr函数 4.模拟实现st ...
- 字符函数、字符串函数、内存函数用法及其模拟实现
目录 1.strlen strlen的模拟实现 2.strcpy strcpy模拟实现 3.strcat - 字符串追加 模拟实现strcat 4.strcmp - 比较字符串 模拟实现stcmp 5 ...
- 赶紧来修炼内功发~内存函数详解大全-memcpy、memmove、memcmp
目录 1. memcpy EX: PS: 模拟实现: 2. memmove EX: 编辑 模拟实现: 3. memcmp EX: PS: 模拟实现: 4. memset EX: 模拟实现: 1. m ...
- 详解memcpy和memmove函数的使用
作者:~小明学编程 文章专栏:C语言基础知识 格言:目之所及皆为回忆,心之所想皆为过往 目录 memcpy 什么是memcpy? memcpy与strcpy的区别 memcpy 模拟实现memcpy ...
- C语言——字符串+内存函数及其模拟实现
目录 0. 思维导图 1. 前言 2. 函数介绍 2.1 strlen 2.2 strcpy 2.3 strcat 2.4 strcmp 2.5 strncpy 2.6 strncat 2.7 str ...
- 【C库函数】memmove函数
目录 memmove 函数原型 参数讲解 返回值讲解 函数讲解 相同点 不同点 memmove 拷贝内存块到目标空间(目标地址和拷贝内容的地址可重叠) 函数原型 void *memmov ...
- 【内存拷贝函数:memcpy与memmove】
文章目录 前言 一.memcpy函数(内存拷贝)的实验 二.memcpy函数的模拟实现 三.memmove函数(内存移动)的实验 四.memmove函数的模拟实现 总结 前言 c和c++使用的内存拷贝 ...
最新文章
- ATS 5.2.1中Background-Fetch插件调研笔记
- Zabbix监控MongoDB
- matlab 将矩阵A写入文件
- CSS对IE6、IE7、IE8支持详细的易用的参考
- .NET 6 攻略大全(三)
- python输入三个商品_用python3采集shopify站点商品
- User breakpoint called from code at 0x771064f4
- Android4.2中Phone的P-sensor的应用的分析。
- 人工智能-机器学习之seaborn(读取xlsx文件,小提琴图)
- atitit.解决SyntaxError: missing ] after element list不个object 挡成个str eval ....
- ubuntu系统安装百度云盘
- 计算机三级信息安全技术试题与答案,计算机三级《信息安全技术》练习题与答案...
- matlab仿真add,simulink中add和sum
- 三个div怎么分别靠左、居中、靠右显示
- idb 怎么回复mysql_MySql数据库通过idb和frm恢复
- 全面概述什么是人工智能?
- 如何画好架构图详解(建议收藏)
- [ITIL]-ITIL4考点考题
- 《沟通的方法》笔记十:激励
- Oulipo (KMP算法)