종종 문제에서 입력을 받을 때 공백을 무시해야 하는 경우가 있다.
숫자만 읽어들이는 경우 scanf("%d", &var)
과 같이 처리할 수 있지만,
문자도 읽어야 하는 경우 공백 문자도 문자로 취급되어 귀찮아진다.
한 줄만 읽는 경우 iostream 혹은 string의 getline
을 쓸 수 있지만,
그렇지 않은 경우 귀찮을 수 있다.
이 때 *
를 사용하면 특정한 문자들을 skip할 수 있다.
공백, 줄바꿈, 탭 문자를 스킵하기 위해서는 다음과 같이 처리하면 된다.
1 | scanf("%*[ \n\t]%c", &var); |
[]
는 해당 대괄호에 있는 문자들을 하나의 그룹으로 묶어,
그 그룹에 속한 문자를 골라내는 역할을 한다.
이 때 그룹의 문자가 몇 개 들어오든 상관없이 모두 뛰어넘는다.
예시 코드
1 |
|
실행 결과
1 | > ./test.out |