strcpy和strncpy的代码实现和区别以及安全性
2016-08-19 09:58
260 查看
1 函数功能和区别说明
strcpy():char *strcpy(char *dest,const char *src),返回值为char *,便于链式访问,参数列表中dest为目 标字符串,src为源字符串。功能:将源字符串整体拷贝到目标字符串,包括字符串结束符“\0”,注意在使用时应该注意dest的空间应该足够放下src。
strncpy():char *strncpy(char *dest,const char *src,int count),与strcpy()不同的地方就是多了参数 count,count为字符串src拷贝到字符串dest的字符个数,如果count给的数值大于src的长度,会在
标字符串相应位置补上“\0”。
2 代码实现
strcpy()char * my_strcpy(char * dest, const char * src) { assert(dest); assert(src); char * temp = dest; while (*dest++ = *src++) { ; } return temp; }strncpy()
char * my_strncpy(char * dest, const char * src,int count) { assert(dest); assert(src); char * temp = dest; while (count--&&(*dest++ = *src++)) { ; } if(count>0) { while (count--) { *dest++ = '\0'; } } return temp; }
3 安全性
在安全性方面,显然strncpy要比strcpy安全得多,strcpy无法控制拷贝的长度,不小心就会出现dest的大小无法容纳src的情况,就会出现越界的问题,程序就会崩溃。而strncpy就控制了拷贝的字符数避免了这类问题,但是要注意的是dest依然要注意要有足够的空间存放src,而且src 和 dest 所指的内存区域不能重叠,相关文章推荐
- linearlayout 中android:gravity与android:layout_gravity的区别以及用代码布局实现
- 【面试题】C语言:模拟实现strncpy,尝试比较strncpy与strcpy区别。
- offsetTop clientX pageX screenX scrollTop之间的区别以及代码实现
- C/C++中strlen(),strcpy(),strcat()以及strcmp()的代码实现--学习笔记
- 【C/C++学院】0822-类型转换函数与构造转换函数/类的继承/类的继承以及区别/继承静态成员与静态函数//继承实现代码重用/单继承QT案例/多继承简介以及实战/Gpu编程
- 运用指针模拟实现一些代码以及memcpy函数与memmove函数的区别
- 动态顺序表的代码实现以及与静态代码的区别
- strcpy 和 strncpy的区别和实现
- 【面试题】C语言:模拟实现strncpy,尝试比较strncpy与strcpy区别。
- PopupWindow的代码实现,以及和AlertDialog的区别
- 微信云控系统源码的核心代码实现,和群控系统的区别,以及优势。
- strcpy,strncpy,strcat,strcnat,strcmp,strncmp,的区别与实现
- HTTP与HTTPS的区别以及代码实现请求
- strcpy和memcpy的区别以及实现
- strcpy、strncpy代码实现。
- strncpy 在 vc runtime 里的实现以及测试代码
- Android 中Home键和Back键监听的区别以及代码实现(附源代码)
- Base64加密解密原理以及代码实现
- 简历群发器设计以及代码实现JDK6HTTP+DOM4j 推荐
- strcpy与memcpy以及strncpy