2017-09-22 33 views
2

나는 많은 문자를 하나씩 getchar() 함수와 함께 가져와야합니다.flushall()가 작동하지 않습니다 - C에서

함수를 사용한 후에 버퍼를 정리해야하지만 flushall()은 버퍼링을 수행하지 않습니다. 함수의 두 번째 반복 후에는 '\n'을 입력으로 가져옵니다. fflush(), _flushall()을 사용해 보았지만 아무도 성공하지 못했습니다. 그 이유는 무엇입니까? 도와주세요.

참고 : getchar()을 사용해야합니다. 당신이 입력 버퍼에 쓰레기를 버리려면

int i; 
char c; 
for (i = 0; i < 5; i++) 
{ 
    c = getchar();  
    printf("%c", c); 
    _flushall(); 
} 
+0

코드는 어디에 있습니까? 그리고 당신이 무엇을하려고하는지 명확하지 않습니다. –

+1

'_flushall;'=>'_flushall();'. 함수를 실제로 호출하지 않고 포인터를 평가하는 것뿐입니다. –

+0

John Bode, _flushall()이 작동하지 않습니다. alk, 왜 내가 플러시 대신에이 모든 것을 써야하나요? – Asher

답변

2

는 그것을 할 수있는 좋은 방법은,

int c; 
do c = getchar(); while (c != EOF && c != '\n'); 

이 다음 개행 또는 파일의 마지막을 포함하여 최대 버리고 것이다 어느 것이 보통 당신이 원하는 무엇입니까.

사용자가 각 키를 누를 때 단일 키 입력에 응답하는 프로그램을 작성하려는 경우이 방법은 작동하지 않지만 전체 stdio.h 인터페이스가 작동하지 않기 때문에 발생합니다. ncurses 또는 GUI "위젯"라이브러리와 같은 다른 것을 사용해야합니다.