'getchar 함수로 입력버퍼 비우는 사용 예.'에 해당되는 글 1건

  1. 2013.02.15 getchar 함수로 입력버퍼 비우는 사용 예.




hoop를 입력하게되면, h만 출력이 되고 나머지 oop\n(엔터키)는 입력버퍼에 남아있게 된다. 그래서 버퍼를 비워주지 않으면 문자열을 입력할때 입력할 기회를 잃게된다.


입력버퍼를 비우는 방법에는 fflush(stdin) 함수가 있지만 이 함수는 visual studio에서만 국한된다. 다른 컴파일러에서는 사용이 안될수도 있다.

그래서 일반적인 방법이 getchar 함수로 입력버퍼를 비워주는 것이다. 


while(getchar() != '\n'); 라는 것으로 입력버퍼를 비워주고 있는데, 이 명령의 뜻은, 일단 getchar()함수로 버퍼에 남아있는 것을 읽어들인다. 문자 단위로

그런 다음, \n과 비교를 한다. 비교를 하여서 \n이 아니면 남아있는 것을 계속 읽어들이면서 비워낸다. 마지막으로 \n을 읽어들인 후 비교를 한다. 조건에 부합되지않기 때문에 반복문 종료. 

따라서 버퍼에는 아무것도 남아 있지 않게 된다.


저것을 풀어 쓰면, 


char a;

while(1)

{

      a = getchar();

      if(a == '\n')

            break;

}


Posted by scii
: