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

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

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);
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.