memcpy函数
2015-11-24 16:34
435 查看
原型:extern void *memcpy(void *dest, void *src, unsigned int count); 用法:#include <string.h> 功能:由src所指内存区域复制count个字节到dest所指内存区域。 说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。 举例: // memcpy.c #include <syslib.h> #include <string.h> main() { char *s="Golden Global View"; char d[20]; clrscr(); memcpy(d,s,strlen(s)); d[strlen(s)]=0; printf("%s",d); getchar(); return 0; } http://www.ggv.com.cn/forum/clib/string/memcpy.html此链接有许多字符串函数可以查询。 看下面这个代码: void *memcpy(void *dest,void *src, unsigned int count) { assert((dest!=NULL)&&(src!=NULL)); if(dest==src) return src; char* d=(char*)dest; char* s=(char*)src; while(count--> 0) *d++=*s++; return dest; } 这是一个memcpy的源代码,可以看看,在函数里面生成临时指针,这样不会改变原始指针 函数原型:extern void *memmove(void *dest, const void *src, unsigned int count) 参数说明:dest为目的字符串,src为源字符串,count为要拷贝的字节数。 所在库名:#include <string.h> 函数功能:将字符串src中的前n个字节拷贝到dest中。 返回说明:src和dest所指内存区域可以重叠,函数返回void*类型指针。 www.yueluo.net 其它说明:功能于memcpy相同。 不同的是,当src和dest所指的内存区域重叠时,memmove()仍然可以正确的处理,不过执行效率上会比使用memcpy()略慢些 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; } memcpy与strncpy区别 strncpy是把Num个字符从src复制到dest,但是如果遇到src字符结尾,那么复制提前结束,后面没有复制完的字符,不予以处理,当然dest,src地址不能重叠, memcpy也是把Num个字符从src复制到dest,但是它是内存复制,不管是不是NULL,照样通吃
相关文章推荐
- .NET——物件导向与类别设计
- oracle 10g中的几个概念(表空间,数据库名,实例名,操作系统环境变量SID)
- 教你学会java基础多线程系列文章之基础篇
- iOS点滴- ViewController详解
- ios switch中case中声明变量报错“expected expression”
- 基础的WordPress插件制作教程
- 如何将硬盘从现有的虚拟机转移到空的虚拟机上?
- Android Manifest.xml文件概述
- Javascript高级程序设计 第八章 --- DOM
- logstash无法读取redis数据
- 杭电1491 Octorber 21st
- 关于在js中关闭浏览器页面的问题
- Java正则表达式提取html纯文本
- 安卓版本更新
- 线程池分析与使用
- iOS tableview header留白,更换header时有留白
- Servlet 生命周期、工作原理
- HDU2222 Keywords Search(AC自动机)
- Java基础---IO流(上)
- Python 练习册,每天一个小程序 -- 0001题