텍스트 및 이진 스트림
텍스트 스트림은 읽을 수 있도록 텍스트 기반 표시에 쓸 수 있는 하나 이상의 텍스트 줄로 구성됩니다. 텍스트 스트림에서 읽는 경우 프로그램은 각 줄의 끝에 있는 줄 바꿈을 읽습니다. 텍스트 스트림에 쓰면 프로그램에서 줄의 끝을 알리는 줄 바꿈을 작성합니다. 파일의 텍스트를 표현하도록 대상 환경의 서로 다른 규칙을 일치시키기 위해 라이브러리 함수가 프로그램과 텍스트 스트림 간에 전송된 문자의 수와 표현을 변경할 수 있습니다.
텍스트 스트림 내의 위치는 제한됩니다. 호출하거나 ftell
.를 호출 fgetpos
하여 현재 파일 위치 표시기를 가져올 수 있습니다. 이러한 방식으로 가져온 위치 또는 스트림의 시작 또는 끝에 텍스트 스트림을 호출 fsetpos
하거나 fseek
배치할 수 있습니다. 다른 위치 변경은 지원되지 않습니다.
이식성을 극대화하기 위해 프로그램은 다음을 작성하면 안 됩니다.
- 빈 파일
- 줄 끝의 공백 문자
- 부분 선(파일 끝에 있는 줄 바꿈을 생략).
- 인쇄 가능한 문자, 줄 바꿈 및 가로 탭 이외의 문자입니다.
이러한 규칙을 따르는 경우 텍스트 스트림에서 읽은 문자 시퀀스는 바이트 또는 멀티바이트 문자로 작성한 문자 시퀀스와 일치합니다. 그렇지 않으면 파일을 닫을 때 파일이 비어 있는 경우 라이브러리 함수가 파일을 제거할 수 있습니다. 또는 파일에 쓰는 문자를 변경하거나 삭제할 수 있습니다.
이진 스트림은 하나 이상의 바이트의 임의 정보로 구성됩니다. 임의 개체에 저장된 값을 이진 스트림(바이트 기반)에 쓰고 이때 개체에 저장된 내용을 정확하게 읽을 수 있습니다. 라이브러리 함수는 프로그램과 이진 스트림 간에 전송하는 바이트를 변경하지 않습니다. 그러나 이진 스트림을 사용하여 작성하는 파일에 임의의 바이트 수를 NULL
추가할 수 있습니다. 프로그램은 이진 스트림의 끝에서 이러한 추가 NULL
바이트를 처리해야 합니다.
스트림의 끝을 기준으로 위치를 지정하는 경우를 제외하고 이진 스트림 내의 위치 지정은 잘 정의됩니다. 텍스트 스트림과 동일하게 현재 파일 위치 표시기를 얻고 변경할 수 있습니다. 스트림의 시작 부분에서 사용되는 ftell
오프셋 및 fseek
개수 바이트(바이트 0)이므로 이러한 오프셋에 대한 정수 산술 연산은 예측 가능한 결과를 생성합니다.
바이트 스트림은 파일을 바이트의 시퀀스로 처리합니다. 프로그램에서 스트림은 위에 설명된 변경을 제외하고는 바이트 시퀀스와 같습니다.