strcpy与strncpy函数 (1) Memset 原型:extern void *memset(void *buffer, int c, int count); 用法:#include 功能:把buffer所指内存区域的前count个字节设置成字符c。说明:返回指向buffer的指针。用来对一段内存空间全部设置为某个字符例:char a[10];memset(a, '/0', sizeof(a)); memset可以方便的清空一个结构类型的变量或数组。如: struct _test { char s[10]; int x; int y; }; 变量 struct _test st; (1)一般清空st的方法如下: st.s[0] = '/0'; st.x = 0; st.y = 0; (2) 用memset方法如下: memset(&st,0,sizeof(struct _test)); 数组: struct _test st[10]; 则用 memset(st,0,sizeof(struct _test)*10); (2)memcpy 原型:extern void *memcpy(void *dest, void *src, unsigned int count); 用法:#include 功能:由src所指内存区域复制count个字节到dest所指内存区域。说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。可以拿它拷贝任何数据类型的对象。 例:char a[10],b[5]; memcpy(b, a, sizeof(b)); /*注意如果用sizeof(a),会造成b的内存地址溢出*/ (3) Strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。 例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串长度(第一个‘/0’之前)是否超过50位,如超过,则会造成b的内存地址溢出 (4) 三者区别 memset 主要应用是初始化某个内存空间。 memcpy 是用于copy源空间的数据到目的空间中。 strcpy 用于字符串copy,遇到‘/0’,将结束。如果理解了这些,就能知道它们的区别:例如初始化某块空间的时候,用到memcpy,那么就显得很笨拙了。 int m[100] memset((void*)m,0x00,sizeof(int)*100); //Ok! memcpy((void*)m,"/0/0/0/0....",sizeof(int)*100); //Not Ok! Strcpy和Strncpy的区别- - 第一种情况: char* p="how are you ?"; char name[20]="ABCDEFGHIJKLMNOPQRS"; strcpy(name,p); //name改变为"how are you ? OPQRS " ====>错误! strncpy(name,p,sizeof(name)) //name改变为"how are you ? " ====>正确! 第二种情况: char* p="how are you ?"; char name[20]; strcpy(name,p); //name改变为"how are you ? 未知字符 " ====>错误! name[sizeof(name)-1]='/0' //和上一步组合,得到正确的结果! strncpy(name,p,sizeof(name)); //name改变为"how are you ? " ====>正确! 第三种情况: char* p="how are you ?"; char name[10]; strcpy(name,p); //name改变为"how are yo" ====>无结束符'/0',错误! name[sizeof(name)-1]='/0' //和上一步组合,弥补结果。但要注意,字符传递错误! strncpy(name,p,sizeof(name)); //和单纯的一步strcpy结果一样! ================================================ 总结:strcpy 如果源长>目标长,则将源长中等于目标长的字符拷贝到目标字符串 如果源长<目标长,则源长全部拷贝到目标字符串,不包括'/0' strncpy 如果目标长>指定长>源长,则将源长全部拷贝到目标长,自动加上'/0' 如果指定长<源长,则将源长中按指定长度拷贝到目标字符串,不包括'/0' 如果指定长>目标长,error happen! strncpy(sptsf_cert.peer_ditm_no,clr_total.payint_acc+7,8) //从第8位后8位拷贝 strncpy(sptsf_cert.recv_inst,clr_total.payint_acc,4);//拷贝前四位为了您的安全,请只打开来源可靠的网址打开网站 取消来自: http://hi.baidu.com/wenleiworld/blog/item/175e072ad002aef0e6cd4033.html http://apps.hi.baidu.com/share/detail/7256732

这是我转贴的strcpy函数与strncpy函数的比较,其中有些错误,建议大家还是看msdn,要好的多相关推荐

  1. strncat 函数、strncmp 函数、strncpy 函数的使用与模拟

    1. strncat 函数. strncat 函数的介绍: strncat 函数char *strncat( char *strDest, const char *strSource, size_t ...

  2. strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数

    strcpy函数: char *strcpy(char *Dest , const char *Src) { assert((Dest != NULL) && (Src != NULL ...

  3. java strcpy,详解C语言中strcpy()函数与strncpy()函数的使用

    C语言strcpy()函数:复制字符串 头文件:#include 定义函数: char *strcpy(char *dest, const char *src); 函数说明:strcpy()会将参数s ...

  4. 用C语言实现strcpy函数和strncpy函数

    内容会持续更新,有错误的地方欢迎指正,谢谢! strcpy函数 strcpy是C语言中的一个复制字符串的库函数,手动实现如下: char* strcpy(char* des,const char* s ...

  5. 随想录(用memmove函数代替strncpy函数)

    [声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 有过C语言编程的朋友应该都有过指针越界的困扰.不管越界的地方是全局地址.还是局部地址,查起来都是 ...

  6. Strcpy函数和Strncpy函数

    strcpy函数详解 strcpy函数原型 char *strcpy( char *strDestination, const char *strSource); 库函数下的strcpy #inclu ...

  7. C语言的库函数、自定义函数、嵌套函数,以及递归函数

    函数是C语言和C++很重要的部分,从它们本身有的系统的库函数,到我们自定义类型的函数.我们需要了解进一步地了解它们,掌握它们,使用它们. 目录 库函数 常见的库函数 自定义函数 1.自定义取最大值得函 ...

  8. 十一.字符串函数与内存函数

    目录 一.求字符串长度 二.长度不受限制的字符串函数 1.strcpy函数 2.strcat函数 3.strcmp函数 三.长度受限制的字符串函数 1.strncpy函数 2.strncat函数 3. ...

  9. c语言 strcpy原型,浅谈C语言中strcpy,strcmp,strlen,strcat函数原型

    实例如下: //strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, cons ...

最新文章

  1. 计算机录入技能考试题,计算机文字录入员高级技能考试试卷
  2. Sencha Touch 2.3 自定义主题皮肤,颜色
  3. SAP ECC6.0内存参数调整和调优
  4. MySQL添加中文记录报错解决方法
  5. 网关Ocelot功能演示安排的明明白白~~~
  6. python flask html模板,python flask web开发实战 Jinja2模板
  7. php中提取现在的时间函数,php中时间函数date及常用的时间计算
  8. 去除html重复的元素 js,js数组中去除重复值的几种方法
  9. c++ builder 改变状态栏字体颜色等样式
  10. 精进 Quartz—Quartz大致介绍(一)
  11. Qt_ERROR qt闪退 竟然是因为pro文件中的冒出来的\n
  12. python病毒攻击代码_用python写的简单病毒(无害) -
  13. 友善之臂Mini2440NORflash bootloader烧写详述---亲测可用
  14. 豆瓣fm android,豆瓣 FM
  15. 网页设计-动态雪花背景源码
  16. docker 进入容器内部及退出
  17. c语言 编程显示图案*,C语言中怎么编程在计算机屏幕上显示如下图案?
  18. 最全Airtest接口功能介绍和示例总结,新手同学千万不能错过呀!(一)
  19. 【基于uml高校新闻发布管理系统】
  20. PMP续证费用和流程

热门文章

  1. Hadoop详解(一):Hadoop简介
  2. securecrt是什么工具_网络总出故障,这几款工具你掌握了没?!!
  3. 抢红包算法 c++_十大排序算法(一):冒泡排序法
  4. 使用SSH+SFTP操作终端全解析,告别XShell
  5. 2B.处女座与cf(C++)
  6. Python基础day4 函数对象、生成器 、装饰器、迭代器、闭包函数
  7. Spring-配置bean的方法(工厂方法和Factorybean)【转】
  8. iOS开发打电话的功能
  9. chrome扩展程序开发
  10. 2008-07-29