社区
C语言
帖子详情
strcpy 函数 一些细节问题
tianxiao1101
2010-09-14 01:29:15
我们都知道 strcpy(a,b) 是将字符串b 内存复制到 字符串 a;
因为字符串b 是以'/0'结尾,因此执行完函数后输出 a 没一点问题;
当这里的b 不是字符串时,而是一个 字符数组时,这事 b所占的内存中没有‘/0’结尾。
执行完函数后,输出a 就会有些问题,特别是 a 的字符串比 字符数组 b 长时。
我想问的是:::::a 内存中后面未被b覆盖的部分,怎么输出;
...全文
154
9
打赏
收藏
strcpy 函数 一些细节问题
我们都知道 strcpy(a,b) 是将字符串b 内存复制到 字符串 a; 因为字符串b 是以'/0'结尾,因此执行完函数后输出 a 没一点问题; 当这里的b 不是字符串时,而是一个 字符数组时,这事 b所占的内存中没有‘/0’结尾。 执行完函数后,输出a 就会有些问题,特别是 a 的字符串比 字符数组 b 长时。 我想问的是:::::a 内存中后面未被b覆盖的部分,怎么输出;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zmkkobe
2010-09-14
打赏
举报
回复
同意二楼。
wlj07057106
2010-09-14
打赏
举报
回复
楼主应该好好看下strcpy函数的定义是怎么样的
赵4老师
2010-09-14
打赏
举报
回复
上帖中
printf("%s,%d,%s\n",a,a[2];a+3);
应改为
printf("%s,%d,%s\n",a,a[2],a+3);
赵4老师
2010-09-14
打赏
举报
回复
char a[6]="abcde";
char b[3]="AB";
int i;
strcpy(a,b);
printf("%s,%d,%s\n",a,a[2];a+3);
//AB,0,de
xinhai9911
2010-09-14
打赏
举报
回复
[Quote=引用 4 楼 insanehui 的回复:]
引用 2 楼 justkk 的回复:
即使b是字符数组,strcpy(a, b)也是从b指定的地址开始拷贝,直到在内存中找到一个\0为止
正解,你使用strcpy函数时传递了一个字符数组给b本身就是不正确的用法。这样导致的情况就像二楼说的那样,你无法知道函数会把b后面的多少数据复制给了a...
所以,你问的所谓“a内存中未被b覆盖的部分怎么输出”是否显得没有意义?
[/Quote]
同意楼上观点!
insanehui
2010-09-14
打赏
举报
回复
[Quote=引用 2 楼 justkk 的回复:]
即使b是字符数组,strcpy(a, b)也是从b指定的地址开始拷贝,直到在内存中找到一个\0为止
[/Quote]
正解,你使用strcpy函数时传递了一个字符数组给b本身就是不正确的用法。这样导致的情况就像二楼说的那样,你无法知道函数会把b后面的多少数据复制给了a...
所以,你问的所谓“a内存中未被b覆盖的部分怎么输出”是否显得没有意义?
evoloyeu
2010-09-14
打赏
举报
回复
这样是会出现段错误的啊哈
justkk
2010-09-14
打赏
举报
回复
即使b是字符数组,strcpy(a, b)也是从b指定的地址开始拷贝,直到在内存中找到一个\0为止
onecl1
2010-09-14
打赏
举报
回复
a内是:a,b,c,d,e,f,\0
b内是:1,2,3,4,\0
拷贝完:1,2,3,4,\0,f,\0
输出到第一个\0结束
C语言面试题.pdf
C语言面试题.pdf
常见C++面试编程题题经典分析.docx
常见C++面试编程题题经典分析.docx
【C语言编程】字符串拷贝
函数
的多种实现方法:从基础到进阶的代码示例与解析
内容概要:本文档详细介绍了C语言中字符串拷贝
函数
的多种实现方式。首先通过一个简单的main01
函数
展示基本的字符逐个复制方法,并强调了添加字符串结束符的重要性。接着定义了四个不同版本的自定义字符串拷贝
函数
my_
strcpy
、my_
strcpy
2、my_
strcpy
3、my_
strcpy
4,分别采用了不同的遍历和赋值策略,其中my_
strcpy
4增加了对空指针的检查并使用了辅助变量来避免直接操作形参指针,最后在主
函数
中调用my_
strcpy
4进行测试并输出结果。; 适合人群:有一定C语言基础的学习者或开发者,尤其是对字符串操作
函数
实现感兴趣的读者。; 使用场景及目标:①理解C语言中字符串拷贝的基本原理;②掌握多种字符串拷贝
函数
的实现方式及其优缺点;③学习如何在实际编程中安全有效地使用自定义字符串拷贝
函数
。; 阅读建议:建议读者仔细阅读每个
函数
的实现
细节
,对比不同实现方式之间的差异,同时可以尝试修改代码以加深理解。注意理解指针运算和空指针检查的重要性。
【C语言编程】字符串拷贝
函数
的多种实现方式及其应用场景分析:基础算法学习与实践
内容概要:本文档详细介绍了多种实现字符串拷贝
函数
的方法,从简单的字符逐个复制到更复杂的带有参数检查和错误处理的版本。首先展示了一个基本的字符串拷贝示例,通过for循环将源字符串逐个字符复制到目标字符串,并补充字符串结束符。接着定义了四个不同版本的自定义字符串拷贝
函数
(my_
strcpy
、my_
strcpy
2、my_
strcpy
3、my_
strcpy
4),逐步优化实现方式,包括使用while循环简化代码逻辑、引入辅助变量避免直接操作形参以及加入空指针判断提高程序健壮性。最后通过main
函数
调用my_
strcpy
4
函数
进行测试,验证了其正确性和可靠性。 适合人群:对C语言有一定了解,特别是正在学习或复习字符串操作、
函数
定义与调用、指针概念的学习者或开发者。 使用场景及目标:①帮助理解字符串拷贝的基本原理及其实现方法;②掌握如何利用指针操作字符串;③学习如何编写更加安全可靠的代码,如增加参数合法性检查。 阅读建议:读者可以先理解每个
函数
的具体实现
细节
,再尝试自己动手实现类似的字符串处理
函数
,从而加深对C语言指针和字符串操作的理解。同时,在实践中注意代码的安全性和效率。
C++程序员应聘常见面试题剖析
C++程序员应聘常见面试题剖析对于应聘面试有帮助
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章