C_C++

(C언어) 입력 버퍼 비우기: rewind fflush

고니자니 2022. 11. 20. 17:52
반응형

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'문자를 모두 건너뜁니다.

 

 

 

반응형