배열하다 막혀서...
모은
배열하다 막혀서...질문 내용 :
#include stdio.h
#define size 10
int main()
{
int i;
int score[size] = {0};
for (i = 0; i sizeof(score); i++)
{
printf(점수를 입력하시오 [%d]\n, i);
scanf(%d, &score[i]);
}
puts([the contents of score array]\n);
for (i = 0; i sizeof(score); i++)
{
printf(%7d,score[i]);
}
return 0;
}
원래 소스
#include stdio.h
int main()
{
int i;
5int score[5];
7for (i = 0; i 5; i++)
{
printf(점수를 입력하시오 [%d]\n, i);
scanf(%d, &score[i]);
}
puts([the contents of score array]\n);
14for (i = 0; i 5; i++)
{
printf(%7d,score[i]);
}
return 0;
}
위 프로그램에서 10개의 수를 입력받기 위해서는 5,7, 14행을 수정할 필요가 있다. 하지만 매번 이와 같은 작업은 비효율적이라 배열의 크기를 변경해야 하는 상황이 와도 5,7,14 행은 일체 변경할 필요가 없도록 위 프로그램을 수정하시오.
라고는 했지만 맨위의 소스는 제가 실행시켜보면 마지막에 쓰레기값이 다량 방출되는데...방법이 없을까요?;;
-
중독적
sizeof(score) 는 int 형 배열이니 배열 갯수 * int 형 크기 만큼 sizeof 가 나옵니다.
그러므로 int형 크기로 나눠주어야 제대로 된 계산이 가능합니다.
sizeof(score)/sizeof(int) 를 사용하시기보다는 배열의 자료형이 바뀌어도 사용할 수 있게 SIZE 를 사용하시길 추천합니다. -
바나나맛사탕
오오 감사합니다 ㅇㅅㅇ 혹시 sizeof(score)/sizeof(int) 쓰는 이유좀 알려주실수?;;
-
들햇님
sizeof(score) 대신 sizeof(score)/sizeof(int) 혹은 SIZE 를 사용하세요.