|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
循环几次之后,一执行strcat,e,d,c三个变量都变了,我输入的是Hold on your hats. Ladies and gentlemen.
https://fishc.com.cn/forum.php?mod=viewthread&tid=70626&extra=page%3D1%26filter%3Dtypeid%26typeid%3D570第一题的问题。javascript:;
下面是代码
#include<stdio.h>
#include<string.h>
int main()
{
char a[21],b='\0',a1[21]="\0";
int e=0,d=0,c=0;
printf("请输入一行文本:");
while(b!='\n')
{
scanf("%s",a1);
strcat(a,a1);
b=getchar();
if(b==' ')
{
c=1;
strcat(a," ");
}
}
printf("你输入的文本是:");
if(strlen(a)<=20)
{
printf("%s",a);
}
else if(strlen(a)>20&&c==1)
{
for(d=20;d>0;d--)
{
if(a[d-1]==' ')
{
for(d++;d>0;d--,e++)
{
printf("%c",a[e]);
return 0;
}
}
}
}
else
{
for(e=0;e<20;e++)
{
printf("%c",a[e]);
}
}
return 0;
}
因为在执行 strcat(a , a1) 的时候,如果发生 a[] 越界,那么,越出部分的字符就会侵占相邻变量的存储空间,导致相关变量的数值发生非预期改变,这就是数组越界带来的危害,是我们写代码第一个要避免出现的问题。
|
|