Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 파일 추가 모드(Append Mode) 완벽 정리: fopen 활용법부터 예제까지

파일(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

프로그램 동작 흐름 요약

  1. 먼저 파일을 읽기 모드('r')로 열어 기존 줄 수를 계산합니다.
  2. 파일을 추가 모드('a')로 다시 열어 사용자 입력을 파일 끝에 덧붙입니다.
  3. 마지막으로 파일을 다시 읽어 추가된 후의 전체 줄 수를 출력합니다.

실행 결과를 보면, 데이터를 추가하기 전에는 3줄이었지만 추가 후에는 8줄로 늘어난 것을 확인할 수 있습니다. 이처럼 추가 모드를 사용하면 기존 파일 내용을 보존하면서 새로운 데이터를 손쉽게 이어 쓸 수 있습니다.