memcpy
内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。
函数实现
void* my_memcpy(void *buf1,const void *buf2, int count) { assert(buf1); assert(buf2 ); void *ret=buf1; char *dest = (char*)buf1; char *src = (char*)buf2; while (count--) { *dest++ = *src++; } return ret; }
memmove
memmove用于从src拷贝count个字符到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。
函数实现
void* my_memmove(void *buf1, const void *buf2, int count) { assert(buf1); assert(buf2);//检测指针有效性 void *ret = buf1; char *dest = (char*)buf1; char *src = (char*)buf2; if ((dest > src) && (dest < src + count)) { while (count--) { *(dest + count) = *(src + count); } } else { while (count--) { *dest++ = *src++; } } return ret; }
例.
#include <stdio.h> #include<stdlib.h> #include <string.h> int main(void) { char s[] = "abcdef"; memmove(s, s + 3, 2);//从s[3]开始复制两个元素到s中 printf("%s", s); system("pause"); return 0; }
时间: 2024-10-13 23:32:11