scanf 함수에서의 공백에 대한 의미

IT/Programming/C/C++ 2014. 7. 16. 16:37

보통 scanf()나 fgets() 등의 사용자 입력을 받는 함수를 연속해서 사용할 경우 사용자는 보통 첫번째 입력 후 엔터를 눌러 개행문자까지 삽입하는데, 이 개행문자가 입력 버퍼에 남아 다음 표준입력 함수에서 이를 읽어버리는 문제가 발생한다.

 

이를 해결하기 위해서 보통 fflush(stdin) 등의 방식으로 입력 버퍼를 모두 비우는데, 이를 처음부터 해결할 수 있는 놀라운 방법이 있다.

 

바로 scanf 에서 포맷스트링을 정의해주는 첫번쨰 인자에 포맷스트링 앞에 공백을 삽입해주면 된다.

 

scanf(" %d", &iNum);

 

이렇게 쓰면 space, tab, newline 과 같은 제어문자를 무시하는 역할을 한다고 한다.

 

정확한건 scanf modifier 에 대하여 공식 문서를 봐야겠지만, 시간이 없는 관계로 패스!

 

설정

트랙백

댓글