getchar 함수로 입력버퍼 비우는 사용 예.
Programming/C 2013. 2. 15. 03:08 |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;
}
'Programming > C' 카테고리의 다른 글
sprintf 함수, sscanf 함수 (0) | 2013.02.15 |
---|---|
문자열 컨트롤 함수 (strlen, strcpy, strcat, strstr, strchr, strtok, atoi 등..) (0) | 2013.02.15 |
bsearch 함수 사용법. (0) | 2013.02.15 |
assert 문 사용하기 (0) | 2013.02.15 |
qsort 함수 사용법 (0) | 2013.02.15 |