memmove
2014-11-03 22:22
260 查看
/* memmove用于从src拷贝count个字符到dest,如果目标区域和源区域有重叠的话, memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。 但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同 */ #include <stdio.h> #include <string.h> void* memmove_c(void *dst, const void *src, size_t count); struct { char name[15]; int age; }person_src, person_dst; int main(void) { char name[] = "luohan"; memmove_c(person_src.name, name, strlen(name)+1); person_src.age = 24; printf("person_src: name = %s, age = %d\n", person_src.name, person_src.age); memmove_c(&person_dst, &person_src, sizeof(person_src)); printf("person_dst: name = %s, age = %d\n", person_dst.name, person_dst.age); char str[] = "memmove can be very useful...use or not use"; memmove_c(str+20, str+15, 11); puts(str); memmove_c(str+10, str+15, 11); puts(str); return 0; } void* memmove_c(void *dst, const void *src, size_t count) { void *ret = dst; // 低字节和高字节的区分 if (dst <= src || (char *)dst >= ((char *)src + count)) { /* * Non-Overlapping Buffers * copy from lower addresses to higher addresses */ while (count--) { *(char *)dst = *(char *)src; dst = (char *)dst + 1; src = (char *)src + 1; } } else { /* * Overlapping Buffers * copy from higher addresses to lower addresses */ dst = (char *)dst + count - 1; src = (char *)src + count - 1; while (count--) { *(char *)dst = *(char *)src; dst = (char *)dst - 1; src = (char *)src - 1; } } return(ret); }
相关文章推荐
- memcpy、memmove、memset、memchr、memcmp、strstr详解
- memmove函数实现2
- 模拟实现memcpy,memmove
- memcpy、memmove、memset及strcpy函数实现和理解
- memset,memcpy,memmove,strcpy,strcat,strcmp的实现(其实很简单,每个程序都只有几行代码)
- 模拟实现memmove
- 实现memcpy( )和memmove( )函数
- memmove 、 memcpy 的区别
- 内存操作函数memcpy和memmove
- string库之模拟实现memcpy与memmove
- 模拟实现函数库中的常用函数,1实现strcpy 2.实现strcat 3.实现strstr 4.实现strchr 5.实现strcmp 6.实现memcpy 7.实现memmove,8实现memset
- 第16章 C预处理器和C库 16.12 string.h库中的memcpy()、memmove()
- memcpy 与 memmove
- memmove 和 memcpy的区别以及处理内存重叠问题
- memcopy和memmove的实现与测试
- memcpy 与 memmove 实现
- memcpy() 和 memmove() 有什么区别?
- [ALIB2-EXAM]有关memmove时的char *p=" "和char p[]=" "的区别
- memmove、memcpy和memccpy简介
- 重写string.h中的字符串操作函数--memmove、memcpy