갑자기 궁금해서 질문 올립니다. printf포맷의 경우
char *input; printf(“\n%s...”, input); 보다는
char *input; printf(“.....%s\n”, input); 많이 쓰는 것으로 알고 있습니다.
앞쪽에 \n을 피하는 특별한 이유가 있나요?
특별한 이유는 없습니다.
stdout의 경우 특별히 redirection을 하지 않는 한 보통 line buffering을 합니다. 다시 말하자면 지나치게 잦은 입출력으로 성능이 떨어지는 것을 막기 위해 \n이 나타날 때까지 기다렸다가 그 줄을 한꺼번에 찍게 됩니다.
따라서 "....\n"으로 쓰면 그 줄이 바로 화면에 나타나는 게 보장이 되지만 "\n...."으로 쓰면 다음 번에 다시 \n을 포함한 문자열을 찍을 때까지 화면에 무한정 안 나타날 수 있습니다.
* 한 줄을 다 완성하지 않아도 화면에 찍고 싶으면 fflush를 쓰시면 됩니다.
모르던 사실이네요. 배워갑니다.
저는 이렇게 생각했습니다.
출력 직후 프로그램이 종료되었을 때 command prompt가 출력 내용이랑 같은 줄에 나오면 이상하다는 이유도 있습니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
특별한 이유는 없습니다.
특별한 이유는 없습니다.
...
stdout의 경우 특별히 redirection을 하지 않는 한 보통 line buffering을 합니다. 다시 말하자면 지나치게 잦은 입출력으로 성능이 떨어지는 것을 막기 위해 \n이 나타날 때까지 기다렸다가 그 줄을 한꺼번에 찍게 됩니다.
따라서 "....\n"으로 쓰면 그 줄이 바로 화면에 나타나는 게 보장이 되지만 "\n...."으로 쓰면 다음 번에 다시 \n을 포함한 문자열을 찍을 때까지 화면에 무한정 안 나타날 수 있습니다.
* 한 줄을 다 완성하지 않아도 화면에 찍고 싶으면 fflush를 쓰시면 됩니다.
모르던 사실이네요. 배워갑니다.
모르던 사실이네요. 배워갑니다.
저는 이렇게 생각했습니다.
출력 직후 프로그램이 종료되었을 때
출력 직후 프로그램이 종료되었을 때 command prompt가 출력 내용이랑 같은 줄에 나오면 이상하다는 이유도 있습니다.
댓글 달기