계속 런타임 에러가 뜹니다

marong142 Reply 9 years 4 weeks ago
#include <stdio.h> int main() { int c, i, a; int ndigit[10]; for (i=0; i<10; ++i) ndigit[i]=0; while ((c=getchar()) != EOF) { ++ndigit[c-'0']; } for (i=0; i<10; ++i) { printf("%d: ", i); for (a=0; a<ndigit[i]; ++a) { putchar('*'); } putchar('\n'); } return 0; } 왜그런거죠, 그리고 런타임 에러가 무엇을 뜻하는 것이죠?
booksky Reply 9 years 4 weeks ago
안녕하세요. 조교 이은헌입니다. Runtime error는 주로 segmentation error가 뜰 때 발생하는 에러로, 허용되지 않은 메모리 공간에 접근하려고 할 때 발생합니다. 예를 들어서 ndigit[10]이라는 10칸짜리 배열 공간을 만들었는데 ndigit[20]처럼 허용되지 않은 공간에 접근하려고 하면 발생하는 것입니다. 이 코드에서 segmentation error가 발생하는 이유는, 숫자 말고 다른 값이 들어왔을 때 잘못된 메모리 공간에 접근하게 되기 때문입니다. 이를 고려해서 코드를 수정해보시기 바랍니다.