다음과 같은 입력을 받는다고 생각해보자.
1
2
3
a
b
c
아마 이 글을 보고 있는 사람들과 나는 아래와 같이 작성했을 것이다.
1
2
3
4
5
6
7
8
int main() {
char ch;
for(int i = 0 ; i < 3; ++i) {
printf("입력하세요 : ");
scanf("%c", &ch);
}
return 0;
}
하지만 이렇게 작성하고 a를 입력하면 다음과 같이 출력된다.
1
2
입력하세요 : a
입력하세요 : 입력하세요 :
이 글을 보고 있는 대다수의 사람들은 buffer 에 \n이 남아 있어서 위와 같은 결과가 나오는 것을 알고 있고 flush를 해줘야 한다는 것을 알고 있을 것이다.
하지만 위 코드에 단 한글자만 추가하면 그런 번거로운 과정을 작성할 필요가 없다.
바로 %c 앞에 공백을 한칸 넣어주면 된다.
1
2
scanf("%c", &ch); // 변경 전
scanf(" %c", &ch); // 변경 후
%c 앞에 공백을 넣어주게 되면 입력으로 받는 문자 중 white space(공백)을 무시한다. 공백문자는 스페이스바, 탭문자(\t), 개행문자(\n)를 말한다.