#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