배열로 입력받기 질문ㅠㅠ

jinwoo4130의 이미지

정수 배열에 입력받은 후 출력
int main()
{
int arr[5];
int i;

for(i=0; i<5; i++)
{
printf("input number :");
scanf("%d", &arr[i]);
}

for(i=0; i<5; i++)
printf("%d",arr[i]);

return 0;}

문자 배열에 입력받은 후 출력
#include

int main()
{
char arr[5];
int i;

for(i=0; i<5; i++)
{
printf("input charater :");
scanf("%c", &arr[i]);
}

for(i=0; i<5; i++)
printf("%c",arr[i]);

return 0;}

정수가 되서 문자도 입력받을려고 수정해 봤는데

첨부파일처럼 만되고 제대로 안되요 하...

File attachments: 
첨부파일 크기
Image icon bb.PNG3.5 KB
익명 사용자의 이미지

적당한 넷 강좌가 있는지 찾아봤는데 없네요.

일단 scanf("%c", &arr[i]); 다음줄에 아래와 같이 입력하십시오.
fflush(stdin);
ㄴ표준입력 버퍼를 비워준다는 의미입니다.

님이 a를 입력한후에 엔터를 치면 표준입력버퍼(stdin)에는 a와 개행문자가 함께 들어가게 됩니다.
때문에 arr[0]에는 a가 들어가게 되구요.

다시 scanf문을 만나면 입력을 받게 되는데요.
표준입력버퍼에 개행문자가 이미 들어가 있는 상태이지요?
그러니 arr[1]에는 개행문자가 들어가게 되고, 다시 printf를 만나게 되니 오류가 발생한 것 처럼 보이는 것입니다.

yukariko의 이미지

fflush 함수를 사용하는 방법도 있지만
scanf(" %c" ~) 처럼 앞에 공백을 주게되면 개행문자들을 무시할 수 있습니다.