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 |