#include <stdio.h>
int main()
{
char memf[10000];
int memlen, vn , vw,vh,fattime , posit , speed , interval , nattacks,time=0,qa=0,ninit=0,elxan;
scanf("%d\n",&memlen);
scanf("%d\n",&vn);
scanf("%d %d %d %d %d %d %d",&vw,&vh,&fattime,&posit,&speed,&interval,&nattacks);
while(nattacks>ninit)
{
if(time==fattime)
{
for(elxan=posit;elxan<=posit+vw;elxan=posit++)
{
memf[elxan]=vh;
}
posit=posit+speed;
time++;
ninit++;
}
else if(time>fattime)
{
for(qa=0;qa<100000;qa++)
{
if(ninit==nattacks)
break;
else if(qa%interval==0)
{
for(elxan=posit;elxan<=posit+vw;elxan=posit++)
{
memf[elxan]=vh;
}
posit=posit+speed;
time++;
ninit++;
}
else
posit=posit+speed;
}
}
else
{ time++;
posit=posit+speed;
}
}
/*for(px=0;px<=memlen;px++)
{
if(memf[px]=='0')
memf[px]=1;
}*/
printf("%s",memf);
return 0;
}
我在执行此代码时得到了segmentation fault:11
。我知道它与数组有关。什么是错误?C分段错误:11
你的测试值是什么? – fritzone
您确定您为vw输入的值是否小于10000?你能告诉我们你输入的数据吗? –
找到这样的错误的三种有用的方法是1)用调试器遍历代码2)添加'printf'语句来监视程序正在使用的值,3)添加'assert'语句来处理事情,数组的末尾(这是我强烈怀疑在这种情况下的问题)。 – Edward