(C语言)从键盘上输入一个字符数组,并将其复制到另一个字符数组。 5

#include<stdio.h>#include<string.h>main(){inti,x;chara[5];charb[10];printf("请输入字符串a:\... #include<stdio.h>
#include<string.h>
main(){
int i,x;
char a[5];
char b[10];

printf("请输入字符串a:\n");
gets(a);
printf("请输入字符串b:\n");
gets(b);
printf("把a复制到b后字符串b为:\n");
strcpy(b,a);
for(i=0;i<10;i++)
printf("%c",b[i]);
printf("\n");
}
这个程序的运行结果如下:
请输入字符串a:
qqqqq
请输入字符串b:
wwwwwwwwww
把a复制到b后字符串b为:
qqqqq wwww
为什么程序运行后b[6]是空而不是w,如何改正。
如何最后输出qqqqqwwwww
老师只让用strcpy(b,a); 怎么改呢?
展开
 我来答
bobbygb
2009-04-24 · TA获得超过247个赞
知道答主
回答量:165
采纳率:0%
帮助的人:157万
展开全部
#include<stdio.h>
#include<string.h>
main(){
int i,x;
char a[10]; //这里应该定义为10个长度,考虑越界,最好定义为16
char b[10];
printf("请输入字符串a:\n");
gets(a);
printf("请输入字符串b:\n");
gets(b);
printf("把a复制到b后字符串b为:\n");
strcat(a,b); //这里应该用字符串连接函数,将b连接到a的后面
for(i=0;i<10;i++)
printf("%c",a[i]);//这里输出的应该为字符组a才得到结果
printf("\n");
getch();
}
现在我来回答你的程序运行后b[6]是空而不是w,因为你用函数strcpy把数组a的5个q和一个‘\0’复制到b中,并将其前面的6个w覆盖,也就是说这时候的b储存为qqqqq\0wwww,然后你用%c输出,第六个当然是\0也就是空了,如果你用%s输出只输出前5个q,因为%s输出遇到‘\0’就结束。
最后来说说改正,前面已经说了,如果要输出qqqqqwwwww,就要用到字符连接函数strcat了,将b连接到a的后面,而并不是覆盖,第六个并不是\0了,而是b的第一字符w,这样也能得到结果但是会越界,并不是最好的方法,考虑用函数做比较好,在这里我就不说了。
wanfustudio
2009-04-24 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3694万
展开全部
因为strcpy会将结尾符号一并拷贝过去
b[6]是a的结尾符号\0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4c0b9bf
2009-04-24 · TA获得超过201个赞
知道答主
回答量:114
采纳率:0%
帮助的人:60.6万
展开全部
因为strcpy会将结尾符号一并拷贝过去
b[6]是a的结尾符号\0
试试strcat或者自己写一个函数...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
midaschi
2009-04-24
知道答主
回答量:62
采纳率:0%
帮助的人:0
展开全部
把strcpy()改成
i=0;
while(a[i]!='\0')
{
b[i]=a[i];
i++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
574453858
2009-04-25
知道答主
回答量:14
采纳率:0%
帮助的人:20.4万
展开全部
我觉得: char a[5],最多只能输入四个q,因为字符串结束标志“\0”若输入五个q就越界了(声明字符串的时候要空出一个额外的位置来放置空字符“\0”)。越界后数值不可靠。 所以出现的结果是不可靠的。

字符串自制函数 strcpy(str1,str2)
:表示把字符数组str2中内容自制到str1中,字符串结束标志“\o”也同时复制。自制时应满足str1的长度应该大于str2 的长度;否则复制将不正确。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式