我是靠谱客的博主 单身诺言,这篇文章主要介绍模拟实现memcpy,memmove,现在分享给大家,希望可以做个参考。

1。
模拟实现memcpy (内存拷贝)(拷贝字符串时不会自动加’’)
注:memcpy拷贝时没有考虑到内存交叉

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h> #include <string.h> #include <assert.h> void *my_memcpy ( void *det ,const char *src ,size_t count) { void *ret = det; assert(det); assert(src); while(count--) { *(char *)det = *(char*)src ; det = (char*)det + 1; src = (char*)src + 1; } return ret; } int main() { char str[]="1234abc886"; char arr[20]; char *ps = NULL; char *pp = NULL; ps = my_memcpy(arr,str,strlen(str)+1); pp = memcpy(arr,str,strlen(str)+1); printf("my_memcpy :%sn",pp); printf("memcpy :%sn",ps); return 0; }

2。
模拟实现memmove (内存拷贝)


这里写图片描述


复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h> #include <string.h> #include <assert.h> void *my_memmove ( void *det ,const char *src ,size_t count) { void *ret = det; assert(det); assert(src); if(det <= src || ((char*)det) >= ((char*)src + count)) { while(count--) { *(char *)det = *(char*)src ; det = (char*)det + 1; src = (char*)src + 1; } } else { det = (char*)det + count - 1; src = (char*)src + count - 1; while(count--) { *(char *)det = *(char*)src ; det = (char*)det - 1; src = (char*)src - 1; } } return ret; } int main() { char str[]="1234abc886"; char arr[20] = " "; char *pp = NULL; *arr = str + 4; pp = my_memmove(arr,str,7); printf("my_memmove :%sn",pp); return 0; }

这里写图片描述

最后

以上就是单身诺言最近收集整理的关于模拟实现memcpy,memmove的全部内容,更多相关模拟实现memcpy内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部