char s1[]="string",*s4="string2",执行strcpy(s1,"string2")正确吗,为什么,s1不是没有确定的长度吗 5
4个回答
展开全部
不正确,s1一旦初始化,长度已自动确定,本题为6,而"string2"长度超出s1数组长度,执行strcpy(s1,"string2")不正确
追问
我看其他人的一些说法是长度没有确定,只有在输入长度数值时才确定,所以执行以上的程序段时,属于正确的
追答
字符数组初始化时,当对所有元素赋初值时,可以省略数组长度定义,此时数组长度自动确定。
以本题为例,此时s1数组长度为7(不好意思,之前数错了),自动存储'\0';而字符串"string"长度为6;
若char s1[]={'s','t','r','i','n','g'};此时数组长度为6;注意,未存储'\0';
展开全部
不正确
1 s1的长度在初始化被赋值s1[]="string"时就确定了 长度为7 (包括结束符\0)
而 string2 包括结束符 长度为8
数组越界了 虽然能运行 但是有可能覆盖其他数据 导致系统出错
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);
}
//字符串"string2"复制到s1时,s1存放不下,数组越界了。
//程序可以运行,但运行时会报错。下面是测试程序。
#include<stdio.h>
#include<string.h>
void main()
{
char s1[]="string",*s4="string2";
strcpy(s1,"string2");
printf("%s\n",s1);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询