分享

bcopy(), memccpy(), memcpy(), strcpy(), strncpy()的区别与使用

 香山早秋 2010-12-13
相关函数: 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;
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/msda/archive/2007/09/03/1770218.aspx

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多