strcpy函数的原型是

char *strcpy(char *strDest, const char *strScr)

{

char *address=strDest;

assert((strDest != NULL) && (strScr != NULL));  //是判断传进来的指针是否为空 如果为空返回一个错误值

while(*strScr)                   //是while(*strScr != ’\0’)的简化形式;

{

*strDest++ = *strScr++;

}

*strDest = '\0';                       //当strScr字符串长度小于原strDest字符串长度

return address;                      //时,如果没有改语句,就会出错了。

}

可能在大多数人用strcpy函数时,都会有个约束,就是原字符串的长度要小于要拷贝目标字符串的长度,也就是*strScr小于

*strDest,我们在定义字符串时,就会赋予其长度。

例如:

char str_dest[20];

char str_scr[10];

strcpy(str_dest, str_scr);

这样就把str_scr字符串中的内容拷贝到str_dest字符串中了

可是有时候我们会不小心把*strScr的长度大于*strDest的长度了 这时会有什么效果呢

就比如:

char str_dest[10];

char str_scr[20];

strcpy(str_dest, str_scr);

我的验证是,程序并不好报错,它会继续输出str_scr中的内容;

举个简单的例子:

# include # include int main()

{

char str1[3];

char str2[20]={"this is a test"};

strcpy(str1, str2);

printf("%s\n", str1);

return 0;

}

运行结果: this is a test

这时我们会把目光注视到原函数上,我们发现strcpy的原函数并没有加两个字符串长度的限制条件,它只是把原字符串中的内容

一个一个地赋值到目标字符串中,而且到最后还给目标字符串加上了结束符“\0”。那么如果目标字符串长度不够时会怎么样呢

? 笔者认为 它会继续一个一个地赋值字符。 拿上面的例子 str1[3], str2[20]="this is a test", str2往str1里赋值。当

str2里的thi 到s 的时候,str1的长度不够了,但是数字中的地址是连续的,比如str1的首地址是1000,那么str1[0]

=1000,str1[1]=1001,str1[2]=1002, 这个时候还要继续往str1里赋值,怎么办,地址还会继续增加的,那么继续增加的地址是我

们没有申请的空间的,这样的话就会很危险的,如果没有申请的地址空间没有被系统占用还好,如果被系统占用的话系统可能就

会崩溃的,所以在使用strcpy函数时要小心谨慎, 原字符串长度要小于目标字符串的长度。

c语言strcpy函数的示例,c语言中的strcpy函数讨论相关推荐

  1. main c语言中变量的定义,C语言中在main函数中定义的变量是全局变量么_后端开发...

    PHP 和 JavaSript 区别_后端开发 PHP是一种创建动态交互性站点的强有力的服务器端脚本语言,主要用于Web开发领域,而JavaSript是一种具有函数优先的轻量级,解释型或即时编译型的高 ...

  2. c语言strlen用法,如何使用c语言中的strlen()函数

    c语言中strlen()函数的用法是:[strlen(const char *str)].该函数用于计算字符串的长度,直到空结束字符,但不包括结束字符,并返回字符串的长度. 函数介绍: (推荐教程:c ...

  3. rand在c语言那一个函数库,浅析C语言中的rand函数和srand函数(一)

    我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的rand函数 ...

  4. C语言中图片处理函数,怎么用C语言中的fopen函数打开bmp格式的图像文件?

    POPMUISE 1.图片也是属于文件类型的一种,图片属于二进制文件.使用fopen函数的二进制模式"rb"就可以打开.2.例程:1234567891011121314151617 ...

  5. linux中 fopen函数,详解C语言中的fopen()函数和fdopen()函数

    C语言fopen()函数:打开一个文件并返回文件指针头文件: #include fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为: FILE * fopen(const char * ...

  6. c语言自动生成系统时间函数,使用C语言中的time函数获取系统时间

    使用C语言中的time函数获取系统时间 可以通过time()函数来获得计算机系统当前的日历时间(Calendar Time),处理日期时间的函数都是以本函数的返回值为基础进行运算.其原型为: time ...

  7. c语言中的printf函数_C语言中的printf()函数与示例

    c语言中的printf函数 C语言中的printf()函数 (printf() function in C) The printf() function is defined in the <s ...

  8. c语言里面gets(a)是什么意思,C语言中的gets()函数

    在c语言中读取字符串有多种方法,比如scanf() 配合%s使用,但是这种方法只能获取一个单词,即遇到空格等空字符就会返回.如果要读取一行字符串, 比如:I love MIT 这种情况,scanf() ...

  9. c语言time函数的作用,c语言中time函数的用法

    c语言中time函数的用法 c语言中time函数的用法的用法你知道吗?下面应届毕业生小编就跟你们详细介绍下c语言中time函数的用法的用法,希望对你们有用. c语言中time函数的用法的用法如下: 头 ...

最新文章

  1. 阿里云MaxCompute(大数据)公开数据集---带你玩转人工智能
  2. gitee怎么看用户名_教你手机怎么远程连接云服务器
  3. springboot项目打包成war并在tomcat上运行的步骤
  4. CentOS 初体验二十:压缩包形式安装redis
  5. Scala的四种Web框架
  6. python typing optional_python类型检测最终指南--Typing模块的使用
  7. ANDROID PAD版本号 PHONE版本号 源代码有什么 差别?
  8. Big day coming...
  9. 在线制作车牌效果图_价格低的防火板材行业专家在线为您服务
  10. c语言编写打字母游戏代码,求一个用C语言编写的小游戏代码
  11. 公转对讲融合项目如何实现对接?
  12. C/C++代码实现向量叉乘
  13. git rebase——分支变基及变基的风险
  14. python 条形图显示数值_如何在条形图的条形图中显示数值?
  15. [翻译]Reactor Netty参考指南 - 8.UDP客户端
  16. python 模拟微信浏览器请求_python+requests对app和微信小程序进行接口测试
  17. java 内存很高_Java服务器内存和CPU占用过高的原因
  18. Python介绍(15)
  19. [ web 漏洞篇 ] 常见web漏洞总结之 SQL 注入总结
  20. 被寄予厚望的跨链,2020能否带来新亮点? | 白话区块链7问跨链

热门文章

  1. oracle 一年一次故障,一次Oracle故障处理过程
  2. windows设备管理器中找不到独立显卡
  3. 一位6年的测试老鸟工作感悟,以及对现阶段的测试行业的分析
  4. 大道至简——找对前进的路
  5. 机器视觉算法与应用:1. 简介
  6. 思考:手游重度化是否是一场囚徒困境?
  7. BZOJ 2066 [Poi2004]Gra
  8. 天池大赛之工业蒸汽处理(改进版 ---- 0.1235)
  9. 汽车的操作系统AUTOSAR
  10. USB充电协议CDP/SDP/DCP