char s1[]="string",*s4="string2",执行strcpy(s1,"string2")正确吗,为什么,s1不是没有确定的长度吗 5

 我来答
尤里斯科特
2012-03-08 · 超过13用户采纳过TA的回答
知道答主
回答量:19
采纳率:0%
帮助的人:34.2万
展开全部
不正确,s1一旦初始化,长度已自动确定,本题为6,而"string2"长度超出s1数组长度,执行strcpy(s1,"string2")不正确
追问
我看其他人的一些说法是长度没有确定,只有在输入长度数值时才确定,所以执行以上的程序段时,属于正确的
追答
字符数组初始化时,当对所有元素赋初值时,可以省略数组长度定义,此时数组长度自动确定。
以本题为例,此时s1数组长度为7(不好意思,之前数错了),自动存储'\0';而字符串"string"长度为6;
若char s1[]={'s','t','r','i','n','g'};此时数组长度为6;注意,未存储'\0';
沧海雄风2009
2012-03-08 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2794万
展开全部
不正确

1 s1的长度在初始化被赋值s1[]="string"时就确定了 长度为7 (包括结束符\0)

而 string2 包括结束符 长度为8

数组越界了 虽然能运行 但是有可能覆盖其他数据 导致系统出错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-03-08
展开全部
//有问题。执行strcpy(s1,"string2");时,s1数组有7个元素,只能存放6个字符(最后一个存'\0')。
//字符串"string2"复制到s1时,s1存放不下,数组越界了。
//程序可以运行,但运行时会报错。下面是测试程序。
#include<stdio.h>
#include<string.h>
void main()
{
char s1[]="string",*s4="string2";
strcpy(s1,"string2");
printf("%s\n",s1);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhouwaiting
2012-03-08
知道答主
回答量:27
采纳率:0%
帮助的人:16.3万
展开全部
不知道,路过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式