memmove() -- 拷贝内存内容
memmove() -- 拷贝内存内容
2007年07月06日 星期五 11:41
相关函数: bcopy(), memccpy(), memcpy(), strcpy(), strncpy()
表头文件: #include <string.h>
定义函数: void *memmove(void *dest, const void *src, size_t n);
函数说明:
memmove()与memcpy()同样都是用来拷贝src所指的内存内容前n个字节到dest所指的地址上。不一样的是,当src和dest所指的内存区域重叠时,memmove()仍然能够正确的处理,不过执行效率上会比使用memcpy()略慢些。
返回值: 返回指向dest的指针。
附加说明: 指针src和dest所指的内存区域能够重叠。
memcpy()、 memmove()和memccpy()
-------------------------------------------------------
这三个函数的功能均是将某个内存块复制到另外一个内存块。前两个函数的区别在于它们处理内存区域重叠(overlapping)的方式不一样。第三三个函数的功能也是复制内存,可是若是遇到某个特定值时当即中止复制。
对于库函数来讲,因为没有办法知道传递给他的内存区域的状况,因此应该使用memmove()函数。经过这个函数,能够保证不会出现任何内存块重叠问题。而对于应用程序来讲,由于代码“知道”两个内存块不会重叠,因此能够安全地使用memcpy()函数。
-------------------------------------------------------
#include <string.h>
#include <stdio.h>
int main()
{
char s[] = "zengxiaolong";
memmove(s, s+4, strlen(s)-4);
s[strlen(s)-4] = '\0'; printf("*s = %s\n", s); return 0; }
欢迎关注本站公众号,获取更多信息