i/o stream에서 라인피드의 삽입여부에 따른 차이

익명 사용자의 이미지

i/o stream에 "\n" (라인피드인가요?) 이 들어간 것과 안들어간 것의 차이
는 뭔가요?

printf("%s", "string");
printf("%s\n", "string");
은 엄연히 다르더군요.

저 문장 다음에 버퍼를 쓰지 않는 입출력 함수(read, write)가 나올 경우
출력 순서가 뒤바뀌는 경우가 생기는데, 개행문자가 들어갈 경우
출력 순서가 정상적으로 나오더군요.

익명 사용자의 이미지

linux를 포함하는 유닉스 계열에서는 printf의 경우 buffered stream을 기
본적으로 지원합니다. man stdio하시면..나올 겁니다.

이 버퍼드 I/O스트림은 데이터가 입출력 되자마자 바로바로 I/O를 처리 하
는 것이 아니라 버퍼에 임시 저장했다가 몇가지 경우에 해당될때 그때 버
퍼의 내용을 해당 I/O로 보내게 되는 데여..

님이 말씀하신 "\n"이 그 경우에 해당되는 것 입니다.

이 외에도 버퍼가 꽉 찾을때도 I/O로 전송되구염...
fflush()가 불리거나, 프로그램종료시(해당 I/O가 닫힐때)에도 버퍼의 내
용이 I/O로 전송됩니다.