Home scanf(" %c", &ch) 로 문자 하나씩 입력받기
Post
Cancel

scanf(" %c", &ch) 로 문자 하나씩 입력받기

다음과 같은 입력을 받는다고 생각해보자.

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)를 말한다.

This post is licensed under CC BY 4.0 by the author.

cin 을 통해 EOF 를 받는 방법

포스팅 가이드