
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;
} 展开
#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;
} 展开
5个回答
展开全部
没有在字符串末尾加'\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;
}
#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;
}
展开全部
strcpy(string,str); 这个函数是一直循环复制,直到遇到‘\0’
但是你
for(i=0;i<10;i++)
{
str[i]='a'+i;
}
中结尾没有‘\0'所以会无限循环,但是到了一定次数后会出现数组越界
但是你
for(i=0;i<10;i++)
{
str[i]='a'+i;
}
中结尾没有‘\0'所以会无限循环,但是到了一定次数后会出现数组越界
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你改一下
for(i=0;i<10;i++)
{
str[i]='a'+i;
}
str[i]='\0';
就OK啦
for(i=0;i<10;i++)
{
str[i]='a'+i;
}
str[i]='\0';
就OK啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
字符串要留一个空放‘\0’
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你没有加字符串结束标志\0.所以用strcpy函数时找不到结束标志或是会访问数组越界。写该如下:
for(i=0;i<9;i++)
{
str[i] = 'a'+i;
}
str[i] = '\0';
下面和你的代码是一样的。
for(i=0;i<9;i++)
{
str[i] = 'a'+i;
}
str[i] = '\0';
下面和你的代码是一样的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询