strcpy的用法.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
strcpy的用法

strcpy函数的用法strcpy(s1,s2);strcpy函数的意思是:把字符串s2中的内容copy到s1中,连字符串结束标志也一起copy.这样s1在内存中的存放为:ch\0;在couts1endl时,结果为ch;事实上,在内存里面是这样的存储结构:ch\0na如果说s1的长度是6,那是错误的.你没有弄清strlen与sizeof的意思。strlen函数的意思是测试字符串的字符长度,不含字符串结束标志的。sizeof是个运算符,它的结果是字符串在内存中的所占字节大小,它要把\0算进去的。strcpy函数原型1char * strcpy(char *a,char *b){ while((*(a++)=*(b++))!=0);return a;}strcpy函数原型2char *strcpy(char *strDest, const char *strSrc);//strDest为目标,strSrc为源{assert((strDest!=NULL) (strSrc !=NULL)); //如果两个为空则不用复制,直接中止char *address = strDest; //用address指向strDest开始地址while( (*strDest++ = * strSrc++) != ‘\0’ ) //复制,直到源串结束;NULL ; //空操作return address ; //返回strDest开始地址}}//就这个算法看来是多余.#include iostreamusing namespace std;int main(int argc,char *argv[]){char s1[6]=china ,s2[3]=ch;couts1endl; //chinacoutstrlen(s1)endl; //5coutsizeof(s1)endl; //6strcpy(s1,s2);couts1endl; //chfor (int i=0;i5;i++){couts1[i]endl;}coutstrlen(s1)endl; //2coutsizeof(s1)endl; //6return 0;}CSDN博客频道“移动开发之我见”主题征文活动【分享季1】:网友推荐130个经典资源,分享再赠分!C语言中函数strcpy ,strncpy ,strlcpy的用法 分类:C/C++2010-03-05 18:161766人阅读评论(1)收藏举报strcpy ,strncpy ,strlcpy的用法好多人已经知道利用strncpy替代strcpy来防止缓冲区越界。但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式。1. strcpy我们知道,strcpy 是依据 /0 作为结束判断的,如果 to 的空间不够,则会引起 buffer overflow。strcpy 常规的实现代码如下(来自 OpenBSD 3.9):char *strcpy(char *to, const char *from){char *save = to;for (; (*to = *from) != /0; ++from, ++to);return(save);}但通常,我们的 from 都来源于用户的输入,很可能是非常大的一个字符串,因此 strcpy 不够安全。2. strncpy在 ANSI C 中,strcpy 的安全版本是 strncpy。char *strncpy(char *s1, const char *s2, size_t n);但 strncpy 其行为是很诡异的(不符合我们的通常习惯)。标准规定 n 并不是 sizeof(s1),而是要复制的 char 的个数。一个最常见的问题,就是 strncpy 并不帮你保证 /0结束。char buf[8];strncpy( buf, abcdefgh, 8 );看这个程序,buf 将会被 abcdefgh 填满,但却没有 /0 结束符了。另外,如果 s2 的内容比较少,而 n 又比较大的话,strncpy 将会把之间的空间都用 /0 填充。这又出现了一个效率上的问题,如下:char buf[80];strncpy( buf, abcdefgh, 79 );上面的 strncpy 会填写 79 个 char,而不仅仅是 abcdefgh 本身。strncpy 的标准用法为:(手工写上 /0)strncpy(path, src, sizeof(path) - 1);path[sizeof(path) - 1] = /0;len = strlen(path);3. strlcpy// Copy src to string dst of size siz. At most siz-1 char

文档评论(0)

80219pm + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档