C语言菜鸟问题(出错在哪里?)

#include<stdio.h>#include<string.h>intmain(){charstring[10],str[10];inti;for(i=0;i<10... #include<stdio.h>
#include<string.h>
int main()
{
char string[10],str[10];
int i;
for(i=0;i<10;i++)
{
str[i]='a'+i;
}
strcpy(string,str);
printf("%s\n",string);
return 0;
}
展开
 我来答
亚马逊选品管家
2012-12-28 · TA获得超过643个赞
知道小有建树答主
回答量:805
采纳率:100%
帮助的人:299万
展开全部
没有在字符串末尾加'\0',改成这样:
#include<stdio.h>
#include<string.h>
int main()
{
char string[11],str[11];
int i;
for(i=0;i<10;i++)
{
str[i]='a'+i;
}
str[10] = '\0';

strcpy(string,str);
printf("%s\n",string);
return 0;
}
595456225
2012-12-28 · TA获得超过120个赞
知道答主
回答量:137
采纳率:0%
帮助的人:86.5万
展开全部
strcpy(string,str); 这个函数是一直循环复制,直到遇到‘\0’

但是你
for(i=0;i<10;i++)
{
str[i]='a'+i;
}

中结尾没有‘\0'所以会无限循环,但是到了一定次数后会出现数组越界
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xfx911018
2012-12-28
知道答主
回答量:12
采纳率:0%
帮助的人:1.9万
展开全部
给你改一下
for(i=0;i<10;i++)
{
str[i]='a'+i;
}
str[i]='\0';
就OK啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianer2Y1C
2012-12-28 · TA获得超过432个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:147万
展开全部
字符串要留一个空放‘\0’
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luoliuncle
2012-12-28
知道答主
回答量:2
采纳率:0%
帮助的人:3125
展开全部
你没有加字符串结束标志\0.所以用strcpy函数时找不到结束标志或是会访问数组越界。写该如下:
for(i=0;i<9;i++)
{
str[i] = 'a'+i;
}
str[i] = '\0';
下面和你的代码是一样的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式