runtime error가 일어나는 이유 질문

lsmtoy Reply 9 years 32 weeks ago
비쥬얼 스튜디오에서 컴파일 하면 문제가 없어보이는데 제출하면 runtime error: bus error라고 뜨네요. bus error가 무슨 뜻인가요? 그리고 이런 에러가 뜨는 원인이 뭔지 알려주세요
pichulia Reply 9 years 32 weeks ago
런타임에러는 주로 배열의 크기보다 더 큰 인덱스를 참조하는 경우 발생합니다. 예를 들어 int a[10]; 배열을 이렇게 선언해놓고 a[1999] = 20; printf("%d", a[-2]); 이렇게 사용할때요.... 지금같은 코드는 collect배열의 크기가 문제입니다. 문제 조건에 "라인별 글자수"가 1000자 이하인거지, 전체 입력되는 문자의 수가 1000개 이하라고 하지 않았습니다. 입력으로 몇줄이 들어올줄 모르는데 정답이 되는 애들을 전부다 배열에 집어넣고 EOF가 들어왔을 때 한번에 출력하는 방식은 별로 추천하고싶지 않습니다. 줄마다 따로 연산을 취하는걸 추천하고싶네요. 여담으로 현재의 코드...c로 EOF가 들어올경우 틀림없이 문제가 발생합니다. 왜 그런지는 abc d(그리고 EOF) 이런 식으로 입력이 들어온 경우 arr배열에 값이 어떻게 들어갈지 체크해보시면 알 수 있습니다.
lsmtoy Reply 9 years 32 weeks ago
답변 감사합니다