왜 printf는 개행 문자를 안 쓰면 출력을 안 하나요?


왜 printf는 개행 문자를 쓰지 않으면 자동으로 출력 되질 않나요? POSIX에서 그렇게 정해 놓은 건가요? printf()할 때마다 자동으로 출력하려면 어떻게 해야 되나요?

  • 2016년 01월 29일에 작성됨

조회수 304


1 답변


좋아요
0
싫어요
채택취소하기

표준출력 stream은 bufferd I/O이기 때문에 버퍼가 꽉 차기 전이나 개행 문자를 만나기 전까지는 flush하지 않습니다.

printf()할 때마다 자동으로 flush 하게 만들려면

1. fprintf()로 stderr에 출력 :

fprintf(stderr, "바로바로 출력돼요");

2. 표준 출력할 때마다 fflush :

printf("fflush가 데러 갈 거예요");
fflush(stdout);

3. setbuf을 써서 설정 바꾸기

setbuf(stdout, NULL);
  • 2016년 01월 29일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close