작성
·
193
0
안녕하세요:)
강의를 듣던 중 버퍼에 관련해 궁금증이 생겨 질문을 남기게 되었습니다.
printf("Input the price.\n>>");
int flad = scanf("%f", &library[count].price);
while (getchar() != '\n') continue;
해당 코드 부분에서
while (getchar() != '\n') continue;
을 작성하신 이유가 버퍼에 들어 있는 엔터를 지우려고 그런 것으로 알고 있습니다.
그런데 버퍼를 지우는 것이라면
fflush(stdin);
을 사용하더라도 되어야 하는게 아닌가 했는데, fflush를 사용해도 버퍼에 엔터가 남아있는 거 같더라고요.
왜 fflush를 사용했을 때는 안되는 지 알 수 있을까요?
강의 너무 잘 듣고 있고, 매번 질의응답 감사드립니다:)
답변 1
2
https://stackoverflow.com/questions/2979209/using-fflushstdin
fflush 는 "출력"스트림 버퍼를 비우는 용도의 함수입니다. fflush 로 입력버퍼를 비우려는 fflush(stdin) 같은 행위는 표준에 정의되어있지 않은 행동이며 입력 버퍼가 비워지는지 안지워지는지는 컴파일러마다 다르다고 하네요. fflush 는 출력스트림 버퍼를 비울때만 사용하시는게 좋겠습니다. 위 링크도 한번 참고해보시길 권합니다.
감사합니다:) !