急~~~c语言的问题

#include<stdio.h>#include<string.h>voidmain(){charstr[3][4]={"abc",'d','e','f','g',"x... #include <stdio.h>
#include <string.h>
void main()
{ char str[3][4]={"abc",'d','e','f','g',"xyz"};
strcpy(&str[0][2],str[1]);
printf("%d",strlen(str[0]));
}
答案是9,希望有过程
展开
 我来答
hsw625728
2008-08-26 · TA获得超过109个赞
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:121万
展开全部
明白你的疑惑了 我把你程序加了几行 先看看吧
#include <stdio.h>
#include <string.h>
void main()
{ char str[3][4]={"abc",'d','e','f','g',"xyz"};

printf("%s\n",str[0]);
printf("%s\n",str[1]);
printf("%s\n",str[2]);

strcpy(&str[0][2],str[1]);
printf("%d",strlen(str[0]));
getch();

}

输出如下
abc
defgxyz
xyz
9

这个数组中 存的 数据如下
a b c \0
d e f g
x y z \0

你可以看到我的 str[1]打印输出的字符是defgxyz没错吧
那么这行代码strcpy(&str[0][2],str[1]);执行后会怎样?
是把 d e f g x y z \0 这8个字符复制给str[0][2]这个地址后的8的字节存储空间上
既把d e f g x y z \0 复制到字母b后面的8个字节也就是c \0 d e f g x y这时的内存空间变成这样

a b d e
f g x y
z \0 z \0
最后一条语句
printf("%d",strlen(str[0]));
输出str[0]字符串的长度,长度是到第一个 \0 结束 ,你数一下从str[0]开始到第一个 \0有几个字符 是不是 a b d e f g x y z \0 这10个字符
这里的 \0不算,是不是应该输出 9
至此回答完毕
百度网友4760e14
2008-08-26 · TA获得超过164个赞
知道小有建树答主
回答量:265
采纳率:0%
帮助的人:252万
展开全部
什么问题?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式