社区
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覆盖的部分,怎么输出;
...全文
113
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语言
strcpy
函数
的使用
strcpy
简单使用: #include <stdio.h> #include <string.h> struct Student { int sid; char name[20]; int age; } st; //此处分号不可省略 int main(void) { struct Student st = {1000,"zhangsan",20};...
【C语言】
strcpy
函数
的超
细节
详解(什么是
strcpy
,如何模拟实现
strcpy
?)
strcpy
函数
是C语言中的字符串复制
函数
。
strcpy
函数
体现出的编程
细节
文章目录前言功能实现优化版本一优化版本二优化版本三`const`关键字返回值 char* 原因总结 前言 在C语言中,
strcpy
库
函数
是我们经常会使用到的一个字符串操作
函数
。它的功能是将字符串A的内容拷贝至字符数组B,其中包含了字符串A中的结束字符\0。我们来看下Cplusplus网站上是如何解释
strcpy
函数
。 图中解释: 功能:将源字符串(source)的内容拷贝至目标字符数组(destination)中,包含源字符串中结束字符\0,并且会在\0的位置停止。为了避免溢出,目标数组必须有足够的空间能
strcpy
函数
与strncpy
函数
strcpy
的功能是将一个字符串复制到另一块空间地址中 的
函数
,‘\0’是停止拷贝的终止条件,同时也会将 ‘\0’ 也复制到目标空间。n:要拷贝的个数,即:将src中前n个字符赋值到dest中。
C语言
Strcpy
函数
使用注意事项:当源字符数组长度大于目标数组时的
细节
问题
(越界)
C语言
Strcpy
函数
使用注意事项:当源字符数组长度大于目标数组时的
细节
问题
(越界)
C语言
69,434
社区成员
243,098
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章