strcpy

原型声明:extern char *strcpy(char *dest,  char *src)

头文件;string.h

功能:把src所指由NULL结束的字符串复制到dest所指的数组中。

说明:src和所指内存区域不可以重叠且必须有足够的空间来容纳src的字符串,返回指向dest的指针。

不使用库函数实现strcpy函数(工业级)

 1 char *strcpy(char *strDest, const char *strSrc) 2 { 3   assert((strDest != NULL)&&(strSrc !=NULL)); 4   char *tmp = strDest; 5   while ((*strDest++ = *strSrc++) !='\0') 6     { 7       ;//或是 NULL; 8     } 9   return tmp;10 }
 

几点说明:

1.注意编程风格,使用strDest, strSrc 这样增强可读性的名字。

2.使用断言来检验输入参数的有效性,如果没有对传入参数strDest和strSrc进行检查,一但它们中有一个为NULL,立死!  assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回false,则终止程序执行。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。

3.使用const来约束strSrc,提高程序的健壮性。如果函数体内的语句试图改动strSrc的内容,编译器将指出错误。

4.strcpy能把strSrc的内容复制到strDest;为什么还需要char *类型的返回值?

这是为了实现链式表达。增加了函数的“附加值”。同样功能的函数,如果能合理地提高的可用性,自然就更加理想

例如:

int length = strlen(strcpy(strDest, "hello, world!"));

另一种形式:(入门级)

 1 char *strcpy(char *strDest, const char *strSrc) 2 { 3   assert((strDest != NULL)&&(strSrc != NULL)); 4   char *address = strDest; 5   while (*strSrc != '\0') 6   { 7     *strDest++ = *strSrc++; 8   } 9   *strDest = '\0';10   return address;11 }

转载于:https://www.cnblogs.com/guoyuqiangf8/archive/2012/01/14/2322187.html

深夜复习strcpy函数原型-----竟然暗藏着这么多玄机相关推荐

  1. strcpy函数原型

    strcpy函数原型,主要参数断言!返回char*主要的为了函数可以实现链式. char *strcpy(char *strDest,const char *strSrc) {assert((strD ...

  2. 常见面试题:重写strcpy() 函数原型

    已知strcpy函数的原型是 char* strcpy(char* strDest,const char* strSrc); 1.不调用库函数,实现strcpy函数 2.解释为什么要返回char*; ...

  3. c语言 strcpy原型,浅谈C语言中strcpy,strcmp,strlen,strcat函数原型

    实例如下: //strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, cons ...

  4. strcpy与strcat函数原型

    1.strcpy函数原型 char *my_strcpy(char *dest,const char *src)    //const使在函数中不能修改*src其原先的值 { char *strDes ...

  5. strcpy函数常见面试题目

    本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵.文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见. 许多面试题看似简单,却需要深厚的基本功才能给出 ...

  6. 自定义strcpy函数c语言,c语言编写strcpy函数的方法

    c语言编写strcpy函数的方法 1.搭建基本的C语言程序框架,注意添加#include头文件 2.定义两个字符数组 3.strcpy函数原型:char *strcpy(char *dest, con ...

  7. strcpy函数用法详细解释

    /*strcpy(s1,s2);strcpy函数的意思是:把字符串s2中的内容copy到s1中,连字符串结束标志也一起copy. 这样s1在内存中的存放为:ch\0; 在cout<<s1& ...

  8. Strcpy函数和Strncpy函数

    strcpy函数详解 strcpy函数原型 char *strcpy( char *strDestination, const char *strSource); 库函数下的strcpy #inclu ...

  9. java实现strcpy的函数原型_strcpy函数的实现

    已知strcpy函数的原型是: char *strcpy(char *dst, const char *src); 实现strcpy函数 解释为什么要返回char * 假如考虑dst和src内存重叠的 ...

最新文章

  1. linux 库函数拦截,如何使用net_dev_add()API过滤和拦截Linux数据包?
  2. 少量数据训练语音识别的思路
  3. 【LeetCode】87. Scramble String
  4. 所谓的二维背包Triangular Pastures POJ 1948
  5. KVM虚拟机共享存储动态迁移与冷迁移
  6. 基于百度理解与交互技术实现机器问答
  7. 基于C#.NET的--Windows进程管理工具
  8. java 二进制 定义_在Java中,我可以用二进制格式定义一个整数常量吗?
  9. 解决织梦(DedeCMS)系统自定义字段图片调用问题
  10. pod trunk push --verbose 失败的原因总结
  11. 本地存储和服务器存储
  12. php商品详情页页面代码,商品详情页是怎么生成的?
  13. 免费计算机管理软件,免费电脑销售管理软件
  14. Intent intent =new Intent(getActivity(),DeliverListActivity.class,Cannot resolve method'getActivity'
  15. 分享 那些经典电影的经典台词
  16. 初探NIVIDIA GPU+CUDA+pyTorch
  17. 线程2--主线程(main线程)
  18. 电脑开不了机启动不了|开机黑屏只有光标再闪
  19. 功能性JavaScript中的过滤和链接
  20. html+css+js实现的图片轮播图下方配文字可变图片可点击

热门文章

  1. uboot.lds链接脚本分析
  2. 机器学习的「反噬」:当 ML 用于密码破解,成功率竟然这么高!
  3. 软工大作业·历物语(二)
  4. 2021.11.08【web刷题记录】
  5. T语言与快速开发平台之天宇联iOS开发手册
  6. 关于mask蒙尘效果触发
  7. 学计算机的多大笔记本合适,笔记本i3,i5怎么选?有多大区别?
  8. 渗透thinksns官网
  9. “毕业季”|一个java开发实习生的OFFER之路
  10. Win10 360浏览器打不开特定网站网页,选择兼容模式有时可以,不稳定