런타임에러 원인이 여러가지 있는데
그 중 하나는 배열의 인덱스를 잘못 접근했을 때 입니다.
예를 들어 int a[10]; 을 잡았는데
sum += a[1003]; 라거나
sum += a[-20]; 처럼
0~9 사이의 숫자가 아닌 인덱스를 a에 넣게 되면 런타임 에러가 발생하는게 가장 흔한 일입니다.
현재 코드같은 경우 output_Num 의 배열의 크기가 10001 인데
1,000,000 자리 2진수가 들어오게 되면 8진수의 자리수는
333,334 자리가 됩니다. 즉, k 값이 10001을 한참 넘어가게 되죠
그래서
for
(
int
i = k - 1; i >= 0; i--)
printf
(
"%d"
, output_Num[i]);
ㅇㅣ 부분에서 런타임 에러가 발생하는 것입니다.
해결방법은 간단합니다.
int
*output_Num = (
int
*)
malloc
(
sizeof
(
int
)* 1000001);
이렇게 output_Num 의 배열 크기를 늘려보세요ㅋ
retrogemhk 9년 전 1
제가 컴파일 해보면 잘 되는데...
어디가 문제일까요ㅠㅠ