본문 바로가기
언어/C

%*c 형식문자

by 맑은청이 2020. 9. 22.
728x90
반응형

scanf("%d%*c",&Age);

 

이런 코드 본 적 있으신가요? 

이는 %d 형식 문자 외에 %*c라는 형식 문자가 추가된 형태인데, 이것은 문자 하나를 입력 버퍼에서 읽어온 후 그냥 버린다는 것을 의미합니다. 

 

이는 fflush(stdin); 으로 입력 버퍼를 비워버리는 거와 같은 동작인데요. 

fflush 은 윈도우에서만 사용이 가능하기 때문에 다른 운영체제간의 통합을 생각한다면 이와 같은 방식이 더 괜찮을 수 있습니다. 

(fflush 는 원래 출력 버퍼를 비우는 게 표준인데 윈도우에서 이 표준을 어겨서 입력 버퍼를 비우는 걸로 합니다.

그러므로 표준을 지킨 리눅스, 유닉스에서는 사용되지 않습니다.) 

 

그럼 이 형식 문자의 사용 예를 살펴보겠습니다.

위 코드를 사용하면 사진처럼 원하는 결과와는 좀 다른 결과가 나옵니다. 

이는 scanf 로 받아 입력 버퍼 안에 개행문자('\n') 이 남아있기 때문인데요. 이게 문자의 끝이기 때문에 gets 는 이를 보고 바로 끝나버린 겁니다. 

 

이 입력 버퍼 안에 들어있는 개행문자('\n') 를 제거해주는 게 우리가 배우고 있는 %*c 형식 문자와 fflush 입니다. 

fflush 사용 방법은 다음과 같습니다.

 

 

%*c 을 사용한 코드는 다음과 같습니다.

 

 

728x90
반응형

'언어 > C' 카테고리의 다른 글

sizeof 연산자  (0) 2020.09.28
NULL의 개념  (0) 2020.08.24