파일(File)이란 레코드(record)들의 집합으로, 데이터가 영구적으로 저장되는 하드 디스크상의 공간을 의미합니다. 이 글에서는 C 언어에서 파일을 다루는 방법 중 특히 추가 모드(append mode)에 대해 자세히 살펴보겠습니다.
파일이 필요한 이유
프로그래밍에서 파일을 사용해야 하는 주요 이유는 다음과 같습니다.
- 프로그램이 종료되면 메모리에 있던 모든 데이터는 사라집니다.
- 파일에 저장하면 프로그램이 종료되더라도 데이터를 영구적으로 보존할 수 있습니다.
- 대량의 데이터를 매번 직접 입력하는 것은 많은 시간이 걸리지만, 파일을 활용하면 이 과정을 생략할 수 있습니다.
- 몇 가지 명령만으로도 파일의 내용에 손쉽게 접근할 수 있습니다.
- 데이터를 변경하지 않고도 한 컴퓨터에서 다른 컴퓨터로 쉽게 이동시킬 수 있습니다.
- C 언어의 명령어를 활용하면 다양한 방식으로 파일에 접근하고 조작할 수 있습니다.
C 언어의 파일 연산
C 프로그래밍 언어에서 수행할 수 있는 기본적인 파일 연산은 다음과 같습니다.
- 파일 이름 지정(Naming)
- 파일 열기(Opening)
- 파일 읽기(Reading)
- 파일 쓰기(Writing)
- 파일 닫기(Closing)
기본 문법
파일 포인터 선언
파일 포인터를 선언하는 문법은 다음과 같습니다.
FILE *File pointer;
예시:
FILE *fptr;
파일 이름 지정 및 열기
파일 포인터에 파일 이름과 모드를 지정하여 여는 문법은 다음과 같습니다.
File pointer = fopen("File name", "mode");추가 모드('a')란?
추가 모드(append mode)로 파일을 열려면 아래와 같은 문법을 사용합니다.
FILE *fp;
fp = fopen("sample.txt", "a");추가 모드의 동작 방식은 다음과 같습니다.
- 파일이 존재하지 않는 경우: 새로운 파일이 생성됩니다.
- 파일이 이미 존재하는 경우: 기존 내용은 그대로 유지되고, 새로운 데이터가 기존 내용 뒤에 덧붙여집니다.
즉, 추가 모드는 기존 파일의 내용을 삭제하지 않으면서 새로운 데이터를 이어서 저장하고 싶을 때 유용하게 사용됩니다.
예제 프로그램
다음은 파일을 추가 모드로 열어 데이터를 덧붙인 후, 파일 내 줄(line)의 개수를 세는 C 프로그램입니다.
#include<stdio.h>
#define FILENAME "Employee Details.txt"
int main(){
FILE *fp;
char ch;
int linesCount=0;
// 파일을 읽기 모드로 열기
fp=fopen(FILENAME,"r");
if(fp==NULL){
printf("File \"%s\" does not exist!!!\n",FILENAME);
return -1;
}
// 문자 단위로 읽으면서 줄바꿈 확인
while((ch=getc(fp))!=EOF){
if(ch=='\n')
linesCount++;
}
// 파일 닫기
fclose(fp);
// 추가 전 줄 수 출력
printf("Total number of before adding lines are: %d\n",linesCount);
fp=fopen(FILENAME,"a"); // 추가 모드로 파일 열기
while((ch = getchar())!=EOF){
putc(ch,fp);
}
fclose(fp);
fp=fopen(FILENAME,"r");
if(fp==NULL){
printf("File \"%s\" does not exist!!!\n",FILENAME);
return -1;
}
// 문자 단위로 읽으면서 줄바꿈 확인
while((ch=getc(fp))!=EOF){
if(ch=='\n')
linesCount++;
}
// 파일 닫기
fclose(fp);
// 추가 후 줄 수 출력
printf("Total number of after adding lines are: %d\n",linesCount);
return 0;
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Total number of lines before adding lines are: 3 WELCOME to Tutorials Its C Programming Language ^Z Total number of after adding lines are: 8
프로그램 동작 흐름 요약
- 먼저 파일을 읽기 모드('r')로 열어 기존 줄 수를 계산합니다.
- 파일을 추가 모드('a')로 다시 열어 사용자 입력을 파일 끝에 덧붙입니다.
- 마지막으로 파일을 다시 읽어 추가된 후의 전체 줄 수를 출력합니다.
실행 결과를 보면, 데이터를 추가하기 전에는 3줄이었지만 추가 후에는 8줄로 늘어난 것을 확인할 수 있습니다. 이처럼 추가 모드를 사용하면 기존 파일 내용을 보존하면서 새로운 데이터를 손쉽게 이어 쓸 수 있습니다.