Programming/C

C언어 공부 25

Pw4ngC0 2019. 6. 11. 22:50
728x90

파일입출력

 

파일들은 프로그램, 문서, 데이터, 서식, 그래픽, 그밖에도 수없이 많은 종류의 정보를 저장하는데 사용된다.

 

파일(file)은 일반적으로 이름이 붙어있는 디스크 상의, 즉 솔리드 스테이트 디바이스(고체 전기가 흐르는 전자 디바이스로 된 고체 상태 장치)의 어떤 영역이다.

 

운영체제 입장에서 볼때 파일은 조금 복잡하다. 예를들어, 하나의 커다란 파일이 여러영역에 나뉘어 저장되어 있을 수도 있다. 또는 어떤 종류의 파일인지 운영체제가 판단할 수 있는 부가적인 데이터가 파일 안에 들어있을 수도 있다.

 

C는 파일을, 각 바이트를 개별적으로 읽을 수 있는, 연속적인 바이트들의 시퀀스로 인식한다. 이것은 C의 성장 배경이였던 Unix 환경에서의 파일 구조와 일치한다. 다른 환경들은 이 모델과 정확히 일치하지 않을수도 있기 때문에, ANSI C는 파일의 두가지 인식 형식을 제공한다. 즉 텍스트 인식과 바이너리 인식을 제공한다.

 

모든 파일 컨텐츠는 2진법의(바이너리)형태 (0과 1의)이다. 그러나 만일 파일이 C문자열만큼 많은 문자를 표현하기 위해 캐릭터용으로 2진 코드를 사용한다면 그것은 텍스트 파일이다. 텍스트 컨텐츠가 있는것이다.

 

파일안에 있는 2진값들이 기계어 코드 또는 수치데이터(int 값 long값 등등) 또는 이미지나 음악 인코딩을 표현한다면 컨텐츠는 바이너리이다.

 

Unix는 두 종류의 컨텐츠에 같은 파일 포맷을 사용한다. C와 Unix모두 텍스트에 행 바꿈을 나타낼때 \n(개행문자)를 사용한다.

 

텍스트 파일을 처리하기 위한 일부 규칙을 가져오기 위해, C는 파일에 엑세스하는 두가지 방식, 즉 텍스트(text)모드와  바이너리(binary)모드를 제공한다. 바이너리 모드에서, 프로그램은 파일의 각 바이트에 그리고 모든 바이트에 접근할 수 있다.

 

텍스트 모드에서는 프로그램이 인식하는 내용과 파일에 있는 내용이 다를 수 있다.

 

텍스트 파일을 반드시 텍스트 관점으로만 사용해야 하는 것은 아니다. 같은 파일을 바이너리 관점으로도 사용할 수 있다.

 

C가 바이너리 관점과 텍스트 관점을 모두 제공하지만 이 관점들은 이상적으로 적용될 수 있다. 언급된 바와 같이, Unix는 하나의 파일 구조만 사용하므로 Unix에서는 구현할 때 두가지 관점들이 동일해진다. 그리고 이것은 Linux도 마찬가지다.

 

728x90