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

조회수 5805회

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)