반응형
C언어 프로그램에서 %d, %c 등을 계속 반복해서 입력 받을 때
엔터 문자 때문에 입력을 받지 않고 건너 띄는 경우가 있습니다.
%c가 이전에 입력한 엔터 문자를 받아서 넘겨 버리기 때문입니다.
몇 가지 방법으로 해결할 수 있습니다.
1. rewind
rewind(stdin); // 입력 버퍼를 비운다. |
%c 를 이용해서 입력 받은 문장 바로 앞에 추가합니다.
rewind(stdin); scanf("%c", &c; |
2. fflush
fflush(stdin); // 입력 버퍼를 비운다. |
fflush() 함수는 표준이 아닙니다. 리눅스나 DevC++에서는 잘 동작하지만
Visual Studio에서는 사용할 수 없습니다.
3.
while(getchar()!='/n'); // 주의: 맨 뒤에 세미콜론(;)문자가 있습니다. |
버퍼에 있는 '\n'문자를 모두 건너뜁니다.
반응형
'C_C++' 카테고리의 다른 글
(C언어) 문자열 뒤집기 (0) | 2022.11.22 |
---|---|
(C언어) 문자열에서 모든 공백을 삭제하는 함수 ★★ (0) | 2022.11.22 |
(C언어) strtok: 문자열 분리 (0) | 2022.11.19 |
(C/C++) 알파벳 개수: 대소문자 구분 (0) | 2022.11.17 |
(C언어) 원주율 파이 구하기 3.1415926535897 (0) | 2022.11.17 |