c语言strcpy函数的示例,c语言中的strcpy函数讨论
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函数讨论相关推荐
- main c语言中变量的定义,C语言中在main函数中定义的变量是全局变量么_后端开发...
PHP 和 JavaSript 区别_后端开发 PHP是一种创建动态交互性站点的强有力的服务器端脚本语言,主要用于Web开发领域,而JavaSript是一种具有函数优先的轻量级,解释型或即时编译型的高 ...
- c语言strlen用法,如何使用c语言中的strlen()函数
c语言中strlen()函数的用法是:[strlen(const char *str)].该函数用于计算字符串的长度,直到空结束字符,但不包括结束字符,并返回字符串的长度. 函数介绍: (推荐教程:c ...
- rand在c语言那一个函数库,浅析C语言中的rand函数和srand函数(一)
我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的rand函数 ...
- C语言中图片处理函数,怎么用C语言中的fopen函数打开bmp格式的图像文件?
POPMUISE 1.图片也是属于文件类型的一种,图片属于二进制文件.使用fopen函数的二进制模式"rb"就可以打开.2.例程:1234567891011121314151617 ...
- linux中 fopen函数,详解C语言中的fopen()函数和fdopen()函数
C语言fopen()函数:打开一个文件并返回文件指针头文件: #include fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为: FILE * fopen(const char * ...
- c语言自动生成系统时间函数,使用C语言中的time函数获取系统时间
使用C语言中的time函数获取系统时间 可以通过time()函数来获得计算机系统当前的日历时间(Calendar Time),处理日期时间的函数都是以本函数的返回值为基础进行运算.其原型为: time ...
- c语言中的printf函数_C语言中的printf()函数与示例
c语言中的printf函数 C语言中的printf()函数 (printf() function in C) The printf() function is defined in the <s ...
- c语言里面gets(a)是什么意思,C语言中的gets()函数
在c语言中读取字符串有多种方法,比如scanf() 配合%s使用,但是这种方法只能获取一个单词,即遇到空格等空字符就会返回.如果要读取一行字符串, 比如:I love MIT 这种情况,scanf() ...
- c语言time函数的作用,c语言中time函数的用法
c语言中time函数的用法 c语言中time函数的用法的用法你知道吗?下面应届毕业生小编就跟你们详细介绍下c语言中time函数的用法的用法,希望对你们有用. c语言中time函数的用法的用法如下: 头 ...
最新文章
- 阿里云MaxCompute(大数据)公开数据集---带你玩转人工智能
- gitee怎么看用户名_教你手机怎么远程连接云服务器
- springboot项目打包成war并在tomcat上运行的步骤
- CentOS 初体验二十:压缩包形式安装redis
- Scala的四种Web框架
- python typing optional_python类型检测最终指南--Typing模块的使用
- ANDROID PAD版本号 PHONE版本号 源代码有什么 差别?
- Big day coming...
- 在线制作车牌效果图_价格低的防火板材行业专家在线为您服务
- c语言编写打字母游戏代码,求一个用C语言编写的小游戏代码
- 公转对讲融合项目如何实现对接?
- C/C++代码实现向量叉乘
- git rebase——分支变基及变基的风险
- python 条形图显示数值_如何在条形图的条形图中显示数值?
- [翻译]Reactor Netty参考指南 - 8.UDP客户端
- python 模拟微信浏览器请求_python+requests对app和微信小程序进行接口测试
- java 内存很高_Java服务器内存和CPU占用过高的原因
- Python介绍(15)
- [ web 漏洞篇 ] 常见web漏洞总结之 SQL 注入总结
- 被寄予厚望的跨链,2020能否带来新亮点? | 白话区块链7问跨链