아무리 봐도 문제가 없는데 런타임 에러가 뜹니다.
푸른나래
단어의 개수 구하기 문제인데요.
아래 코드에 아무리 생각해봐도 문제가 없는거 같은데
baekjoon online judge 1152번에서 자꾸 런타임 에러가 뜨네요
왜그럴까요??
아 그리고 런타임 에러 라는게 무엇을 뜻하는건가요?
#include stdio.h
int main(){
char input[100]=;
int i=0;
int size=0;
int size2=0;
gets(input);
if(input[0]==32||input[0]==0){
printf(%d, size);
return 0;
}
for(; isizeof(input); i++){
if(input[i]==32){
size++;
}
else if(input[i]==0){
break;
}
}
for(i=0; isizeof(input); i++){
if(input[i]!=-2){
size2++;
}
else{
break;
}
}
size2--;
size++;
if(input[size2-1]==32){
size--;
}
printf(%d, size);
return 0;
}
이 코드가 런타임 에러가 뜨는데
런타임 에러라는게 무엇인지도 궁금하고
런타임 에러를 뜨지 않게 코드를 수정하려면 어떻게 해야 할까요??
-
By은지
답이 틀렸습니다라고 나옵니다.
답이 틀린건 적어도 실행시에 오류가 나는건 아니라는 거니...
(원하는 답이 나오지 않는 것이니... 답이 잘못 나오는 경우가 있습니다. ^^;;;)
p.s. 이런 문제 푸는 것은 어떤 입력을 넣었을때 틀린거고, 런타임 에러가 나는지를 안가르쳐주시기 때문에 상당히 짜증나죠. 솔직히 시험을 위한 공부랄까... -
시크포텐
인풋의 크기를 어느정도 주었을 때 에러가 나지 않나요??
답이 틀리다는건 틀렸습니다 라는 메세지가 나오는 건가요?? -
Glisten
해당 사이트가 뭔가 해서 한번 가입을 해봤네요. ^^;;;
거기에 에러 메시지가 나오는데, 에러 메시지 내용을 알려주셨으면 좋았을텐데...
저랑 동일한 오류를 받으셨다면,
Runtime Error:[ERROR] A Not allowed system call: runid:137778 callid:146
*** buffer overflow detected ***: ./Main terminated
이 에러를 받으셨을텐데요.
에러의 내용은 할당된 공간 -
석죽
아마도 Visaul Studio나 다른 개발툴을 이용해서 개발하실텐데요.
개발툴에서는 프로그램의 오류를 찾도록 도와주는 다양한 기능들이 있습니다.
예를 들어 F5로 실행하시면, 런타임 오류가 발생했을때, Call Stack을 확인하시면, 어느 부분에서 죽는지 확인할 수 있다던가...
실행되면서 변수값이 어떻게 바뀌는지 등을 확인할 수 있습니다.
이 외에도 몇가지 기능 사용법을 익혀두시면, 런타임 오류를 발견했을때, 효율적으로 대처하실 수 있을거예요. ^ -
후회중
디버거 사용법이란게 어떤건가요?
-
4차원
참고로 런타임 에러는 실행중에 발생하는 에러이기 때문에 간단한 디버거 사용법을 익히시면, 원인 분석에 큰 도움이 됩니다.
-
알렉산더
문제 조건이 글자 수는 1000000을 넘지 않는다 인데요.
저 수를 배열로 하면 또 오류가 납니다..ㅠㅠ