본문 바로가기
컴퓨터 공학/C, C++

[ C ] 파일 입출력 이해하기2_파일의 개방모드(Mode)

by hahehohoo 2020. 7. 25.
반응형

 

 

C언어 문법 파일의 개방모드(Mode)

 

fopen 함수의 두 번째 인자로 "wt"와 "rt"를 전달하여 스트림을 형성했습니다. 사실 스트림의 종류는 더 다양합니다. 기본적으로 두 가지 기준이 있는데 하나씩 보겠습니다. 

 

기준 1: 읽기 위한 스트림? vs 쓰기 위한 스트림?

 

모드(Mode) 스트림의 성격 파일이 없으면?
r 읽기 에러
w 쓰기 생성
a 덧붙여 쓰기 생성
r+ 읽기/쓰기 가능 에러
w+ 읽기/쓰기 가능 생성
a+ 읽기/덧붙여 쓰기 가능 생성

 

위 표를 참조하여 만들고자 하는 스트림의 특성에 맞춰 '파일의 개방 모드'를 선택하면 됩니다. 그 조합이 fopen 함수의 두 번재 인자가 됩니다. 모드의 +는 읽기, 쓰기가 모두 가능한 스트림의 형성을 의미합니다. 더 좋은 모드라고 생각할 수 있지만 수시로 메모리 비워줘야 하는 불편함이 있어서 많이 사용하지 않습니다.

 

기준 2: 텍스트 모드? vs 바이너리 모드?

데이터를 출력할 때 개행의 표현방식을 유의해야 합니다. 개행은 줄을 바꾸는 것을 의미합니다. 그 자체가 하나의 데이터로 존재하는 것은 아닌데요. C언어에서는 \n으로 표현합니다. 여기서 중요한 것은 컴퓨터 환경마다 개행을 표현하는 방식이 다르다는 점입니다. Windows 기반의 편집기는 파일에 \r\n이 나란히 있어야 개행으로 인식하고, 맥에서는 \r이 등장해야 합니다. 이렇게 운영체제마다 차이가 있기 때문에 

텍스트 모드로 파일을 개방하면 알아서 개행 문자 변환을 해준다. 

rt, wt, at, r+t, w+t, a+t

이는 파일 개방 모드에 텍스트 모드를 의미하는 t가 붙은 형태이다. 

 

바이너리 데이터를 저장하고 있는 파일의 경우 이러한 형태의 변환이 일어나면 안되기 때문에 바이너리 모드로 파일을 개방해야 한다. 

rb, wb, ab, r+b, w+b, a+b

이 역시 개방 모드에 바이너리 모드를 의하는 b가 붙은 형태이다.

 

참고로 t, b 둘 다 붙여주지 않으면 파일은 텍스트 모드로 개방됩니다. 

 

 

 

 

-----------------------------------

C언어 문법 총정리

목록 보러가기 

-----------------------------------

 

 

 

 

반응형


댓글