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

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. golang byte转string_golang系列——实战http服务器
  2. NR 5G 用户平面协议
  3. MySQL的答理证和技艺撑持费用
  4. 回文算法java实现_java算法题:最长回文串
  5. java反射用法示例_Java包| 类型,用法,示例
  6. 查询数据时给列起别名的三种方法
  7. 刚刚GitHub 收购 npm,旨在提升开源软件供应链安全
  8. JAVA CLASS混淆工具:RetroGuard(已无法下载)
  9. SU插件情报局 | SUBD(细分曲面)详细中文介绍
  10. 教师信息管理c语言程序设计,信息技术教师招聘考试真题(附答案版)
  11. 2021-2027全球与中国11-氨基十一烷市场深度研究分析报告
  12. E-牛牛小数点_牛客练习赛89(数学)
  13. 查询student表中姓童的学生情况
  14. 安卓模拟器设置网速和延迟
  15. 树莓派开发和车牌识别
  16. FastDFS自定义文件存储系统
  17. ReflectionTestUtils.invokeMethod方法的使用
  18. mysql中varchar与oracle中varchar2区别
  19. R语言ggplot画双坐标-柱状图、折线图
  20. html文档成品,html 成品代码

热门文章

  1. 博士团队专业代做滑坡崩塌泥石流风险评估大小论文
  2. 利用通达信科建站系统通用型漏洞,Get Shell多家高校全过程
  3. 工具|MySQL、Redis、MongoDB网络抓包工具
  4. memset memcpy
  5. Unity 3D : 解 3D LUT Cube 檔案
  6. QtCreator正常显示第三方控件库
  7. plsql 复制表结构到指定表空间_Oracle Rman 完全恢复 表空间 数据文件
  8. 计算机主机电池怎么安装,电脑主板怎么更换CMOS电池?电脑主板纽扣电池更换安装的图文教程...
  9. Cocos2d漫游指南第十一章亦真亦幻
  10. 项目管理 : 故事06-救 人