더북(TheBook)

텍스트 파일에 대한 IO 버퍼링의 가장 흔한 방식은 라인 버퍼링(line buffering)C이다. 이 모드로 지정하면 텍스트의 마지막 줄에 도달할 때 물리적으로 기록된다. 따라서 puts로 작성한 텍스트는 터미널에 곧바로 나타나고, fputs로 작성한 텍스트는 '/n'이 나타날 때까지 기다린다. 텍스트 스트림, 파일과 관련하여 또 다른 흥미로운 점은 프로그램에서 쓰는 문자가 콘솔 장치나 파일에 도달하는 바이트 사이와 일대일 대응 관계가 아니라는 것이다.

TAKEAWAY 8.11 텍스트 입력과 출력 데이터는 변환된다.

그 이유는 텍스트 문자에 대한 내부와 외부 표현이 반드시 같을 필요가 없기 때문이다. 아쉽게도 아직까지 여러 문자 인코딩 방식이 있다. 그래서 C 라이브러리는 이들 사이의 변환이 필요할 때 작업을 최대한 정확히 처리하는 역할을 한다. 이러한 변환 작업 중에서도 특히 까다로운 부분은, 파일에서 EOL(end-of-line)에 대한 인코딩 방식이 플랫폼마다 다르다는 점이다.

TAKEAWAY 8.12 EOL 인코딩에 흔히 적용되는 변환 방법은 크게 세 가지가 있다.

그래서 C 언어는 플랫폼에 관계없이 '/n'를 사용할 수 있도록 추상화했다. 또한 텍스트 IO를 수행할 때 EOL 앞에 나오는 공백은 제거될 수 있다는 점도 주의해야 한다. 그래서 탭 문자나 공백이 뒤따르지 않도록, 다시 말해 줄끝 공백(trailing white space)C이 없도록 작성해야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.