fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로 처리됨 결국, 다음 페이지에서 보듯이 모든 명령어 처리 후에 “no such command”가 발생 [해결방법] 이것을 없애는 방법은 scanf 함수 뒤에 fflush 함수를 사용함 fflush는 buffer의 내용을 모두 비움으로서 입력된 Enter를 제거함 int main(void) { char c; while(1) { printf(">"); scanf("%c",&c); switch (c) { case 'h': help(); break; case 'p': hello(); case 'q': quit(); default: printf("no such command \n"); } #include <stdio.h> void help() printf("h: help \n"); printf("p: print hello world \n"); printf("q: quit this program \n"); void hello() printf("hello world !!!\n"); void quit() exit(0);
no such command 발생 해결됨!!! int main(void) { char c; while(1) { printf(">"); scanf("%c",&c); fflush(stdin); switch (c) { case 'h': help(); break; case 'p': hello(); case 'q': quit(); default: printf("no such command \n"); } 해결됨!!!