파일(File)은 여러 개의 레코드(record)로 이루어진 집합체이며, 데이터를 하드 디스크에 영구적으로 저장하는 공간을 의미합니다. 프로그램이 종료된 후에도 데이터를 보관해야 하는 경우 파일은 필수적인 요소입니다.
C 언어 파일의 두 가지 종류
C 언어에서 파일은 데이터를 저장하는 방식에 따라 다음 두 가지로 나뉩니다.
- 텍스트 파일(Text File)
- 바이너리 파일(Binary File)
텍스트 파일(Text File)이란?
알파벳과 숫자 등 사람이 읽고 이해하기 쉬운 형태로 데이터를 저장합니다.
오류가 발생하더라도 눈으로 내용을 직접 확인하고 수정할 수 있습니다.
문자 하나당 1바이트씩 저장되기 때문에 데이터 양이 많아지면 용량이 커질 수 있습니다.
예를 들어 정수 4567은 메모리에서는 2바이트를 차지하지만, 텍스트 파일에서는 '4', '5', '6', '7' 각각의 문자와 줄바꿈 문자를 포함해 5바이트를 차지합니다.
데이터 형식은 주로 라인(줄) 단위로 구성되며, 각 줄이 하나의 독립적인 명령이나 레코드 역할을 합니다.
바이너리 파일(Binary File)이란?
0과 1의 이진 데이터로 구성되어 있으며, 컴퓨터가 빠르고 효율적으로 처리할 수 있습니다.
오류가 발생하면 파일 전체가 손상될 수 있고, 육안으로 감지하기가 매우 어렵습니다.
정수 1245처럼 값을 이진 형태 그대로 저장하므로 메모리와 파일 모두에서 2바이트를 차지합니다.
읽거나 쓰려면 반드시 해당 형식을 지원하는 전용 소프트웨어가 필요합니다.
예를 들어 MP3 파일은 사운드 레코더나 오디오 편집기로 제작되며, 음악 재생 프로그램에서만 재생할 수 있습니다.
MP3 파일은 이미지 뷰어나 데이터베이스 소프트웨어에서는 열리지 않습니다.
텍스트 파일 vs 바이너리 파일 비교
| 구분 | 텍스트 파일 | 바이너리 파일 |
|---|---|---|
| 저장 형식 | 사람이 읽을 수 있는 문자 | 0과 1의 이진 데이터 |
| 용량 효율 | 문자당 1바이트로 상대적으로 큼 | 메모리 크기 그대로 저장하여 효율적 |
| 오류 처리 | 내용을 눈으로 확인 후 수정 가능 | 손상 시 감지가 어려움 |
| 호환성 | 대부분의 편집기에서 열람 가능 | 전용 소프트웨어 필요 |
접근 방식에 따른 파일 분류
- 순차 파일(Sequential File) − 데이터를 처음부터 끝까지 순서대로 저장하고 유지하는 방식입니다.
- 랜덤 액세스 파일(Random Access File) − 원하는 위치의 데이터에 임의로 접근하여 저장하고 검색하는 방식입니다.
마무리
텍스트 파일은 사람이 읽고 수정하기 쉬운 대신 용량이 커지기 쉽고, 바이너리 파일은 용량 효율성과 처리 속도가 뛰어난 대신 전용 프로그램이 필요합니다. C 언어에서는 fopen() 함수의 모드("r", "w", "rb", "wb" 등)를 통해 두 형식을 모두 다룰 수 있으므로, 데이터의 성격과 용도에 맞는 파일 형식을 선택하는 것이 중요합니다.