首先,两者都是字符串拷贝函数,不同的是两个的参数个数不一样。

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函数的功能及缺陷相关推荐

  1. strcpy()、strncpy()函数

    本片博客简单写下关于strcpy().strncpy()两函数的用法.区别及使用时需要注意的地方. 一.使用介绍 1. strcpy()函数用法 char * strcpy ( char * dest ...

  2. C语言strcpy、strncpy函数是否会复制‘\0‘结束符

    1.首先看看strcpy函数的原型 /* strcpy函数原型*/ char *strcpy(char *est,const char *src) {assert((dest!=NULL)&& ...

  3. 这是我转贴的strcpy函数与strncpy函数的比较,其中有些错误,建议大家还是看msdn,要好的多

    strcpy与strncpy函数 (1) Memset 原型:extern void *memset(void *buffer, int c, int count); 用法:#include 功能:把 ...

  4. C语言 - strcpy和strncpy的编程实现及总结

    一.字符串的strcpy与strncpy函数 1.编程实现strcpy函数(笔试很容易考到) 要求: 原型:char *stpcpy(char *strDest,char *strSrc); 头文件: ...

  5. 模拟实现strncpy函数

    初学C语言的人应该对strcpy和strncpy函数很熟悉.strcpy函数用于实现字符串的复制,打开msdn可以看到它的函数原型为char *strcpy( char *strDestination ...

  6. c语言strncpy源码,C语言 - strcpy和strncpy的编程实现及总结

    一.字符串的strcpy与strncpy函数 1.编程实现strcpy函数(笔试很容易考到) 要求: 原型:char *stpcpy(char *strDest,char *strSrc); 头文件: ...

  7. sprintf、strcpy、strncpy及 memcpy 函数,请问这些函数功能有什么区别?配实例详解!

    (1)sprintf:把格式化字符串写入某个字符串,对写入buffer的字符数没有限制,存在溢出可能: (2)strcpy:把src开始以\0结尾的字符串复制到以dest为开始的地址空间,dest可能 ...

  8. 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数

    一.函数介绍: 1.memcpy 函数原型:extern void *memcpy(void *dest, const void *src, size_t count); 用法:#include< ...

  9. strcpy()、strncpy()、strlcpy()、strncpy_s()函数

    strncpy()函数 原型:extern char *strncpy(char *dest, char *src, int n);     用法:#include <string.h>  ...

最新文章

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

热门文章

  1. html按钮突出效果,凸起的按钮效果
  2. Node-Red-访客、操作员和管理员登录
  3. iOS9 定位服务启用
  4. 中美纺织品达成暂时性协议
  5. Deflater与Inflater的压缩与解压缩
  6. 制作黑苹果U盘clover引导(懒人版)
  7. 绿卡日记:2020-12-21
  8. 3月第4周小红书达人影响力榜单,助力红书数据分析
  9. 小程序学习——打开已有的项目
  10. Http和Web Socket