strlen() 和 strcpy()函数
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提示是:

说明字符串数组定义小了,换成大小为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()函数的更多相关文章
- strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数
		
strcpy函数: char *strcpy(char *Dest , const char *Src) { assert((Dest != NULL) && (Src != NULL ...
 - strcpy函数的实现
		
strcpy函数的实现 大家一般认为名不见经传strcpy函数实现不是很难,流行的strcpy函数写法是: char *my_strcpy(char *dst,const char *src) { a ...
 - strcpy函数实现
		
1,strcpy最简便实现 char * strcpy_to (char *dst, const char *src) { char *address = dst; assert((dst != NU ...
 - strcpy函数和strncpy函数的区别
		
strcpy函数和strncpy函数的原型介绍在我的另一篇文章中介绍了,见strcpy,strncpy,strlen等函数原型 strcpy:字串复制 原型:char *strcpy(char *de ...
 - strcpy函数
		
不调用C/C++库函数,编写strcpy()函数. char * my_strcpy(char *strDest,const char *strSrc) { char *p=strDest; whil ...
 - 写出完整版的strcpy函数及其他如:strcat,strcmp,strstr的函数实现
		
(---牛客网中刷题---)写出完整版的strcpy函数 如果编写一个标准strcpy函数的总分值为10,下面给出几个不同得分的答案: 2分 1 2 3 4 void strcpy( char *st ...
 - 不使用库函数、自己编写的(strlen、strcpy、strcmp、strcat、memcmp、memcpy、memmove)
		
不使用库函数.自己编写的(strlen.strcpy.strcmp.strcat.memcmp.memcpy.memmove) //求字符串长度的函数 int my_strlen(const char ...
 - strcpy函数的实现【转】
		
转自:http://www.cnblogs.com/chenyg32/p/3739564.html 已知strcpy函数的原型是: char *strcpy(char *dst, const char ...
 - strstr strcpy 函数的实现
		
一. strcpy 代码实现 #include <iostream> #include <assert.h> #include <iostream> //#incl ...
 
随机推荐
- URAL 1779 F - The Great Team 构造
			
F - The Great TeamTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest ...
 - 【v2.x OGE教程 19】  引擎状态控制
			
1.手机button监听 OGE中提供了在BaseGameLauncher(GameLauncher的父类)和IScene(Scene实现的接口)中定义了onKeyUp和onKeyDown的方法.使得 ...
 - android150  笔记
			
1. 什么是Activity? 四大组件之一,一般的,一个用户交互界面对应一个activity,界面的容器. setContentView() ,// 要显示的布局 button.setOnclick ...
 - centosx64位寄存器
			
[root@monitor ~]# uname -aLinux monitor 2.6.32-431.23.3.el6.x86_64 #1 SMP Thu Jul 31 17:20:51 UTC 20 ...
 - 高级I/O之异步I/O
			
A synchronous I/O operation causes the requesting process to be blocked until that I/O operation com ...
 - 【天池大数据赛题解析】资金流入流出预测(附Top4答辩ppt)
			
http://mp.weixin.qq.com/s?__biz=MzA3MDg0MjgxNQ==&mid=208451006&idx=1&sn=532e41cf020a0673 ...
 - 小白日记38:kali渗透测试之Web渗透-手动漏洞挖掘(四)-文件上传漏洞
			
手动漏洞挖掘 文件上传漏洞[经典漏洞,本身为一个功能,根源:对上传文件的过滤机制不严谨] <?php echo shell_exec($_GET['cmd']);?> 直接上传webshe ...
 - 小白日记37:kali渗透测试之Web渗透-手动漏洞挖掘(三)-目录遍历、文件包含
			
手动漏洞挖掘 漏洞类型 #Directory traversal 目录遍历[本台机器操作系统上文件进行读取] 使用者可以通过浏览器/URL地址或者参数变量内容,可以读取web根目录[默认为:/var/ ...
 - PHP读书笔记(3)-常量
			
什么是常量 什么是常量?常量可以理解为值不变的量 :或者是常量值被定义后,在脚本的其他任何地方都不可以被改变.手册上是这么定义PHP的常量:常量是一个简单值的标识符(名字).如同其名称所暗示的,在脚本 ...
 - iOS xcode6添加预编译文件
			
在xcode6以后,由于苹果不建议开发者乱用预编译文件,所以,在项目创建之后 就不会自动生成预编译文件. 那么如果我们想要使用预编译文件,就需要自己动手来添加.那到底该如何为我们的项目添加预编译文件呢 ...