strcpy strncpy 区别 strncpy 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]=‘‘      //和上一步组合,得到正确的结果!

strncpy(name,p,sizeof(name));        //name改变为"how are you ?      "      ====>正确!

第三种情况:

char* p="how are you ?";

char name[10];

strcpy strncpy 区别 strncpy strcpy和strncpy区别
strcpy(name,p);      //name改变为"how are yo"     ====>无结束符‘‘,错误!

name[sizeof(name)-1]=‘‘      //和上一步组合,弥补结果。但要注意,字符传递错误!

strncpy(name,p,sizeof(name));      //和单纯的一步strcpy结果一样!

 

总结:strcpy

如果源长>目标长,则将源长中等于目标长的字符拷贝到目标字符串

如果源长<目标长,则源长全部拷贝到目标字符串,不包括‘‘

strncpy

如果目标长>指定长>源长,则将源长全部拷贝到目标长,自动加上‘‘

如果指定长<源长,则将源长中按指定长度拷贝到目标字符串,不包括‘‘

如果指定长>目标长,error happen!

 

 

 

/***************************************************************************************************

东去东来总结:

strcpy(),以源串中的‘‘为拷贝结束标志,直到遇到该NULL为止,然后将NULL拷贝上.

strncpy()以第三个参数N为拷贝结束标志,如果source的长度小于N,则剩余的字符全部用NULL填充.

              如果source的长度大于N,则从source中截取前N个字符,拷贝过去.  

爱华网本文地址 » http://www.aihuau.com/a/414251/520561671652.html

更多阅读

石英表和机械表的区别 精 机械表石英表区别

石英表和机械表的区别 精——简介准备想购买一块手表,但不很清楚石英表和机械表的区别在哪,经过一番购买咨询,也知道了他们之间的一些区别,下面分享给大家,在买手表、钟表等时可以参考一下哦。石英表和机械表的区别 精——方法/步骤石英

电脑待机与休眠的区别 电脑待机和休眠的区别

电脑待机与休眠的区别? ? 首先确定的是休眠和待机不能下载的。因为硬盘都断电了。?休眠和待机的原理都是吧内存的东西保存住,下次就可以不用重新加载操作系统,但他们最大的不同是前者把内存中的数据临时保存到硬盘中,下次开机就直接

锤子和小米哪个好,有什么区别? 小米和锤子哪个好

锤子和小米哪个好,有什么区别?——简介随着锤子的推出,小米和锤子孰优孰劣的争论已经成为各自粉丝争论的焦点,小米和锤子可以说有说不完的故事,在粉丝中也各有各的影响力,网络上有很多争论,那么在产品上究竟谁棋高一着呢?锤子和小米哪个好,

声明:《strcpy strncpy 区别 strncpy strcpy和strncpy区别》为网友壮哉我硕爷分享!如侵犯到您的合法权益请联系我们删除