printf함수 사용시에 왜 \n을 해야 하는가요??
글쓴이: kcv / 작성시간: 금, 2004/04/30 - 4:07오전
안녕하세요
리눅스에서 c는 첨짜보는 초짜입니다.
윈도우에서 짤떄는 \n없어도 출력이 잘되더라구요
예를 들어서 printf("abc");
근데 리눅스에서는 수십번 컴파일,실행을 해도 화면에 아무것도 안나타나더군요
\n을 붙이니까 그제서야 나오던데
이유가 뭔가요..
답변검색을 해보니 fflush가 어쩌구 저쩌구 하시던데 ..
제가 혹시나 해서 해봤는데 뭐가 문제인지는 몰라도, 안되더군요
#include<stdio.h>
void main()
{
printf("a");
fflush(stdout);
}
으어^^
답답해요
Forums:
-_-a \n을 넣지 않았다고 해서 출력이 안되는 건 아닙니다.실
-_-a \n을 넣지 않았다고 해서 출력이 안되는 건 아닙니다.
실제로 제 콘솔에서는 확실히 잘 출력되는걸요.
대신 출력 바로 뒤에 쉘 프롬프트가 붙어서 출력됩니다.
출력이 안되었다기보다는 환경에 문제가 있는 것 아닌가요?
가령 X에서 그래픽 모드를 사용하는 터미널을 사용했다던가...
stdout의 버퍼링 정책 때문입니다.버퍼링은 3가지를 이야기하는
stdout의 버퍼링 정책 때문입니다.
버퍼링은 3가지를 이야기하는데.. 하난 라인단위.. 하난 문자단뒤.. 하난 블럭단위...
라인단위 이상의 버퍼링을 할경우 버퍼가 완전히 찼을 경우 출력을 합니다. 혹은 새라인을 입력하는 것입니다.
\n가 개행 문자라는 것을 생각해보면.. 후자에 해당한다는 사실을 알 수 있습니다.
라인단위 버퍼링시 버퍼의 기본 크기값은 생각이 안나네요... 물론 프로그램 상에서 이버퍼의 크기도 변경이 가능합니다.
APUE(책제목이 가믈가믈... ) 같은 것을 보면 설명이 나옵니다.
Do you think that's the air you are breathing now?
한번 printf("abcdefghijklmnopqrstuvwxyz");
한번 printf("abcdefghijklmnopqrstuvwxyz");를 해보세요.
댓글 달기