深析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> ...
最新文章
- C# 给某个方法设定执行超时时间
- mfc c语言 编辑器,语法高亮编辑控件Scintilla在MFC中的简单使用
- python打开excel表_Python启动Excel
- android7.0wine乱码,Wine1.7+QQ6.4+处理中文乱码
- VM异常关闭后导致虚拟机无法打开问题解决办法【已解决】
- mysql降级_mysql8降级到mysql5的方法介绍
- 【转】Linux下gcc编译生成动态链接库*.so文件并调用它
- 一次Web请求返回406原因与解决方案
- 马云:今后数字技术是让人类能够更好的生存下去
- AI戒毒?没错,北京开始这么干了
- python中文视频教程-中谷教育python中文视频教程(全38集)
- 利用VBB仿真——实现24小时电子钟
- (四)深度学习入门之对图像进行简单分类(cifar10数据集)
- 解决在串口调试助手中每次复位后只能发送一次数据的问题
- 惠普笔记本按开机键后电源灯亮的,但是屏幕一直是黑的,只有大写锁定键闪烁,闪3次一个循环,听得到风扇...
- 关于CSI的一条龙服务
- Error:A JNI error has occurred,please check your installation and try again
- 在html中设置margin属性,margin
- 【极简教程】用 Mkdocs 库发布你的网站
- 悉尼今晚率先熄灯一小时 抗击全球气候变化