의도: 사용자로 부터 문자를 두번 입력받아 출력하기
#include <stdio.h>
int main(void) {
char ch1,ch2;
// 의도: 첫번째 문자 입출력
printf("Enter the first character. \n");
scanf("%c",&ch1);
printf("First character is %c.\n",ch1);
// 의도: 두번째 문자 입출력
printf("Enter the second character. \n");
scanf("%c",&ch2);
printf("Second character is %c.\n",ch1);
return 0;
}
그러나 아래와 같이 실제로 사용자는 문자를 한번만 입력했음에도 출력은 두번 된다....
분명히 'A'만 입력한 상황인데 프로그램이 종료되었다,,,
우리가 키보드를 통해 값을 입력하면 어떠일이 벌어질까?
'A'를 입력을 위해 입력한 "엔티키('\n')" 이 입력 버퍼에 남게 되고 ch2에 들어가게 된다.
최종적으로
"Second character is 줄바꿈." 가 출력되게 된다.
getchar(); 를 통해 입력버퍼에서 '\n'을 비워낼수 있다.
입력버퍼를 비웠기 때문에 아래 코드는 이제 우리의 의도대로 정상작동한다.
#include <stdio.h>
int main(void) {
char ch1,ch2;
// 의도: 첫번째 문자 입출력
printf("Enter the first character. \n");
scanf("%c",&ch1);
printf("First character is %c.\n",ch1);
// 버퍼 비우기
getchar();
// 의도: 두번째 문자 입출력
printf("Enter the second character. \n");
scanf("%c",&ch2);
printf("Second character is %c.\n",ch2);
return 0;
}