인프런 커뮤니티 질문&답변

Syyy님의 프로필 이미지
Syyy

작성한 질문수

홍정모의 따라하며 배우는 C언어

14.4 구조체의 배열 연습문제

버퍼 엔터 지우기

작성

·

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 는 출력스트림 버퍼를 비울때만 사용하시는게 좋겠습니다. 위 링크도 한번 참고해보시길 권합니다.

Syyy님의 프로필 이미지
Syyy
질문자

감사합니다:) !

Syyy님의 프로필 이미지
Syyy

작성한 질문수

질문하기