#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;
}
왜그런거죠, 그리고 런타임 에러가 무엇을 뜻하는 것이죠?
안녕하세요. 조교 이은헌입니다.
Runtime error는 주로 segmentation error가 뜰 때 발생하는 에러로, 허용되지 않은 메모리 공간에 접근하려고 할 때 발생합니다.
예를 들어서 ndigit[10]이라는 10칸짜리 배열 공간을 만들었는데 ndigit[20]처럼 허용되지 않은 공간에 접근하려고 하면 발생하는 것입니다.
이 코드에서 segmentation error가 발생하는 이유는, 숫자 말고 다른 값이 들어왔을 때 잘못된 메모리 공간에 접근하게 되기 때문입니다.
이를 고려해서 코드를 수정해보시기 바랍니다.