首页 > 其他 > 详细

strlen() 和 strcpy()函数的区别

时间:2014-04-02 08:26:25      阅读:468      评论:0      收藏:0      [点我收藏+]

strlen() 和 strcpy()函数的区别,这两个一个是返回一个C风格字符串的长度,一个是对一个C风格字符串的拷贝,两个本来功能上是不同的,此外,他们还有一些细小的区别:strlen("hello")返回的结果是5,是不包含字符串结尾处的‘\0’,但是strcpy(str1,str2),会拷贝str2中的‘\0’

在使用strlen()的返回值去为strcpy的第一个参数分配空间的时候一定要注意!

举个例子:

char *str = "hello";
int length = strlen(str);
char char_array[5];
strcpy(char_array,str);
printf("the new string is:%s\n",char_array);
cout<<"str‘s length is: "<<length<<endl;

这样输出的length是5,但是编译器会提示错误,VS2010提示是:

bubuko.com,布布扣

说明字符串数组定义小了,换成大小为6的数组则恢复正常。

 

在此,建议在使用strcpy的时候,目标数组(第一个参数)的大小应该设置为strlen()函数返回值+1 的值,或者建议使用如下的初始化数组方式:

char char_array[sizeof("hello")];
char * char_array_two = new char[strlen(str) + 1];

 

参考资料:

http://baike.baidu.com/link?url=QfLOtNdldgq29v53l6wKhyeB7AFxrejppntX3mhL5DHw03heqHLyRGT4Vo1b38YxgQdY8aruLeoT5h6XqLzhka

http://blog.csdn.net/yasi_xi/article/details/9088291

strlen() 和 strcpy()函数的区别,布布扣,bubuko.com

strlen() 和 strcpy()函数的区别

原文:http://www.cnblogs.com/bugking/p/3639196.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!