实现memcpy和memmove函数
来源:互联网 发布:钓炸天盗号软件app 编辑:程序博客网 时间:2024/05/21 01:51
题目:
自己定义一个函数,实现my_memcpy和my_memmove函数。
题目分析:
memcpy函数主要实现的是内存的拷贝,函数接受任意类型的参数,并且有拷贝个数的限制,函数与strcpy函数在功能上有相似点,也有不同点。memmove函数在memcpy函数的基础上解决了内存重叠的问题。下面是memcpy和memmove函数的实现:
my_memmove函数:
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <assert.h> //实现内存拷贝函数void *my_memcpy(void *p1, const void *p2, size_t count) //count为内存的大小(所拷贝的字节数){ assert(p1); assert(p2); char *dst = (char *)p1; //将p1、p2强制类型转换为字符指针类型 char *str = (char *)p2; while (count--) { *dst++ = *str++; } return p1;} int main(){ char dst[10] = {0}; char str[] = "abcdef"; my_memcpy(dst, str, 4); printf("%s\n", dst); system("pause"); return 0;}
my_memmove函数:
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <assert.h> //实现内存移动void *my_memmove(void *p1, const void *p2, size_t count){ assert(p1); assert(p2); char *dst = (char *)p1; char *str = (char *)p2; if (*dst > *str && *dst < *(str + count)) { while (count--) //从前往后拷贝 { *(dst + count) = *(str + count); } } else { while (count--) //从后向前拷贝 { *dst++ = *str++; } } return dst;} int main(){ char dst[10] = "abcdefg"; char str[] = "def"; my_memmove(dst, str, 2); printf("%s\n", dst); system("pause"); return 0;}
本文出自 “无心的执着” 博客,转载请与作者联系!
0 0
- 实现memcpy和memmove函数
- 实现memcpy( )和memmove( )函数
- 实现memcpy和memmove函数
- memcpy和memmove函数的实现
- memcpy和memmove函数的实现
- memcpy和memmove的函数内部实现
- 模拟实现memcpy和memmove函数
- 模拟实现memcpy和memmove函数
- memcpy 和 memmove 函数
- memmove和memcpy函数
- memcpy 和 memmove 实现
- 模拟实现memcpy memmove 函数
- memcpy,memmove函数的实现
- 模拟实现 memcpy memmove 函数
- memcpy函数和memmove函数的模拟实现与区别
- memcpy和memmove函数的区别和实现
- Linux实现 memcpy和memmove
- memcpy memmove区别和实现
- 二维数组中的查找,杨氏矩阵
- SSM编辑时数据无法保存到数据库里
- 冒泡排序
- 找出一组数中只出现一次的两个数,其他所有数都是成对出现的
- strlen函数的三种实现方式
- 实现memcpy和memmove函数
- define和typedef区别
- 判断数字1在计算机中的存储方式
- 连接函数strcat与strncat
- 单链表
- 数据结构——栈与队列
- 面试题——查找单链表的中间节点
- 类和对象—日期类
- DFS JAVA 模板