• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

버퍼 엔터 지우기

21.03.12 14:27 작성 조회수 157

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

안소님의 프로필

안소

2021.03.13

https://stackoverflow.com/questions/2979209/using-fflushstdin

fflush 는 "출력"스트림 버퍼를 비우는 용도의 함수입니다. fflush 로 입력버퍼를 비우려는 fflush(stdin) 같은 행위는 표준에 정의되어있지 않은 행동이며 입력 버퍼가 비워지는지 안지워지는지는 컴파일러마다 다르다고 하네요. fflush 는 출력스트림 버퍼를 비울때만 사용하시는게 좋겠습니다. 위 링크도 한번 참고해보시길 권합니다.

Syyy님의 프로필

Syyy

질문자

2021.03.18

감사합니다:) !