深析strcpy与strncpy函数的功能及缺陷
首先,两者都是字符串拷贝函数,不同的是两个的参数个数不一样。
char *strcpy(char *dest,const char *src)
char *strncpy(char *dest,const char *src,size_t count)
//表示可以从源拷贝多长
strcpy函数:若参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误;
strncpy 函数:用来复制源字符串的n个字符,src和dest 所指的区域不能有重叠,并且dest必须有足够空间存放,否则会出现越界和栈溢出的错误。
my_strncpy(str1+5,str1,4);
例如:strncpy在进行自我拷贝时会出现重叠区域
总结:strncpy
1、如果目标长>指定长>源长,则将源长全部拷贝到目标长,自动加上’\0’;
2、指定长<源长,则将源长中按照指定的长度拷贝到目标字符串中,不包括’\0’;
3、若指定长>目标长运行错误
char *my_strcpy(char* dest,const char *src)
{if(NULL==src||NULL==dest) return dest;char *cp=dest;//while(*dest++=*src++);while(*src!='\0'){*cp=*src;cp++;src++;}*cp='\0';return dest;
}
char *my_strncpy(char *dest,const char *src,size_t count)
{if(NULL==dest ||NULL==src) return dest;char *cp=dest;int i =0;for( ;i<count && *src!='\0';++i){*cp = *src;cp++;src++;}while(i<count){*cp='\0';cp++;++i;}return dest;}
深析strcpy与strncpy函数的功能及缺陷相关推荐
- strcpy()、strncpy()函数
本片博客简单写下关于strcpy().strncpy()两函数的用法.区别及使用时需要注意的地方. 一.使用介绍 1. strcpy()函数用法 char * strcpy ( char * dest ...
- C语言strcpy、strncpy函数是否会复制‘\0‘结束符
1.首先看看strcpy函数的原型 /* strcpy函数原型*/ char *strcpy(char *est,const char *src) {assert((dest!=NULL)&& ...
- 这是我转贴的strcpy函数与strncpy函数的比较,其中有些错误,建议大家还是看msdn,要好的多
strcpy与strncpy函数 (1) Memset 原型:extern void *memset(void *buffer, int c, int count); 用法:#include 功能:把 ...
- C语言 - strcpy和strncpy的编程实现及总结
一.字符串的strcpy与strncpy函数 1.编程实现strcpy函数(笔试很容易考到) 要求: 原型:char *stpcpy(char *strDest,char *strSrc); 头文件: ...
- 模拟实现strncpy函数
初学C语言的人应该对strcpy和strncpy函数很熟悉.strcpy函数用于实现字符串的复制,打开msdn可以看到它的函数原型为char *strcpy( char *strDestination ...
- c语言strncpy源码,C语言 - strcpy和strncpy的编程实现及总结
一.字符串的strcpy与strncpy函数 1.编程实现strcpy函数(笔试很容易考到) 要求: 原型:char *stpcpy(char *strDest,char *strSrc); 头文件: ...
- sprintf、strcpy、strncpy及 memcpy 函数,请问这些函数功能有什么区别?配实例详解!
(1)sprintf:把格式化字符串写入某个字符串,对写入buffer的字符数没有限制,存在溢出可能: (2)strcpy:把src开始以\0结尾的字符串复制到以dest为开始的地址空间,dest可能 ...
- 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
一.函数介绍: 1.memcpy 函数原型:extern void *memcpy(void *dest, const void *src, size_t count); 用法:#include< ...
- strcpy()、strncpy()、strlcpy()、strncpy_s()函数
strncpy()函数 原型:extern char *strncpy(char *dest, char *src, int n); 用法:#include <string.h> ...
最新文章
- golang byte转string_golang系列——实战http服务器
- NR 5G 用户平面协议
- MySQL的答理证和技艺撑持费用
- 回文算法java实现_java算法题:最长回文串
- java反射用法示例_Java包| 类型,用法,示例
- 查询数据时给列起别名的三种方法
- 刚刚GitHub 收购 npm,旨在提升开源软件供应链安全
- JAVA CLASS混淆工具:RetroGuard(已无法下载)
- SU插件情报局 | SUBD(细分曲面)详细中文介绍
- 教师信息管理c语言程序设计,信息技术教师招聘考试真题(附答案版)
- 2021-2027全球与中国11-氨基十一烷市场深度研究分析报告
- E-牛牛小数点_牛客练习赛89(数学)
- 查询student表中姓童的学生情况
- 安卓模拟器设置网速和延迟
- 树莓派开发和车牌识别
- FastDFS自定义文件存储系统
- ReflectionTestUtils.invokeMethod方法的使用
- mysql中varchar与oracle中varchar2区别
- R语言ggplot画双坐标-柱状图、折线图
- html文档成品,html 成品代码
热门文章
- 博士团队专业代做滑坡崩塌泥石流风险评估大小论文
- 利用通达信科建站系统通用型漏洞,Get Shell多家高校全过程
- 工具|MySQL、Redis、MongoDB网络抓包工具
- memset memcpy
- Unity 3D : 解 3D LUT Cube 檔案
- QtCreator正常显示第三方控件库
- plsql 复制表结构到指定表空间_Oracle Rman 完全恢复 表空间 数据文件
- 计算机主机电池怎么安装,电脑主板怎么更换CMOS电池?电脑主板纽扣电池更换安装的图文教程...
- Cocos2d漫游指南第十一章亦真亦幻
- 项目管理 : 故事06-救 人