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 ...
随机推荐
- linux编程基础
http://blog.csdn.net/jnu_simba/article/details/8806654
- MySQL Router 测试使用 转
MySQL Router 测试使用 . 特性 MySQL Router 并没有包括一些特别新的特性, 总体上看中规中矩, 不过 first-available 和插件两个特性挺有意思, 后续会进行讲解 ...
- 关于Service常驻内存不被清理的解决方法.
众所周知, Service是跑后台的. 但是有些Rom厂商把一键清理做的真是太好用了, 以至于一键清理变成了一种习惯, Service已经变的不再是Service了. 那为什么像诸如360, 微信, ...
- HOWTO install Oracle 11g on Ubuntu Linux 12.04 (Precise Pangolin) 64bits
安装了Ubuntu 12.04 64bit, 想在上面安装Oracle 11gr2,网上找了好多文档都没成功,最后完全参考了MordicusEtCubitus的文章. 成功安装的关键点:install ...
- Java_Utils框架
Spring Utils https://github.com/tangyanbo/springmore
- [转]UINavigationController 返回的方法汇总
[html] view plaincopy [self.navigationController popViewControllerAnimated:YES]; UINavigationControl ...
- 探索 Linux 内存模型--转
引用:http://www.ibm.com/developerworks/cn/linux/l-memmod/index.html 理解 Linux 使用的内存模型是从更大程度上掌握 Linux 设计 ...
- python-其他常用模块
本节大纲: 模块介绍 time &datetime模块 random shutil shelve xml处理 yaml处理 configparser hashlib subprocess lo ...
- Lastest Version Carprog Full V7.28 update and EEPROM reading
Carprog Full has recently launched the newest V7.28 (with all software activated and all 21items Ada ...
- MAC mysql安装及设置
MAC下安装MYSQL有两种方式,一种为压缩包形式 另一种为.dmg文件安装包 . 首先先介绍压缩包形式的安装方法: 去MySql官网下MySQL classic版mysql-5.1.54-osx ...