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

C 언어로 한 파일의 내용을 다른 파일에 복사하는 프로그램 작성하기

파일(File)은 레코드의 집합이자, 데이터가 영구적으로 저장되는 하드 디스크상의 공간을 의미합니다. C 언어의 다양한 명령어를 활용하면 여러 방식으로 파일에 접근하고 조작할 수 있습니다.

파일에서 수행할 수 있는 연산

C 언어에서 파일에 대해 수행할 수 있는 기본 연산은 다음과 같습니다.

  • 파일 이름 지정
  • 파일 열기
  • 파일 읽기
  • 파일 쓰기
  • 파일 닫기

기본 문법

파일 포인터를 선언하고 파일을 여는 문법은 다음과 같습니다.

FILE *파일 포인터;

예를 들어 다음과 같이 선언할 수 있습니다.

FILE *fptr;

fopen 함수를 사용해 파일을 열 때는 파일 이름과 모드를 지정합니다.

파일 포인터 = fopen("파일 이름", "모드");

실제 사용 예시는 다음과 같습니다.

FILE *fp;
fp = fopen("sample.txt", "w");

파일에서 데이터를 읽는 문법은 다음과 같습니다.

int fgetc( FILE *fp ); // 파일에서 한 문자씩 읽어옵니다

파일에 데이터를 쓰는 문법은 다음과 같습니다.

int fputc( int c, FILE *fp ); // 스트림에 개별 문자를 씁니다

이 두 함수를 조합하면 한 파일의 내용을 다른 파일로 복사하는 프로그램을 손쉽게 작성할 수 있습니다.

예제 코드

다음은 한 파일의 내용을 다른 파일로 복사하는 C 프로그램의 전체 코드입니다.

#include <stdio.h>
#include <stdlib.h> // exit() 함수 사용을 위한 헤더 파일
int main(){
    FILE *fptr1, *fptr2;
    char filename[100], c;
    printf("Enter the filename to open for reading \n");
    scanf("%s",filename);
    // 읽기용 파일 열기
    fptr1 = fopen(filename, "r");
    if (fptr1 == NULL){
       printf("Cannot open file %s \n", filename);
       exit(0);
    }
    printf("Enter the filename to open for writing \n");
    scanf("%s", filename);
    // 쓰기용 파일 열기
    fptr2 = fopen(filename, "w");
    if (fptr2 == NULL){
       printf("Cannot open file %s \n", filename);
       exit(0);
    }
    // 파일 내용을 한 문자씩 읽어 복사
    c = fgetc(fptr1);
    while (c != EOF){
       fputc(c, fptr2);
       c = fgetc(fptr1);
    }
    printf("\nContents copied to %s", filename);
    fclose(fptr1);
    fclose(fptr2);
    return 0;
}

프로그램 동작 원리

이 프로그램은 먼저 사용자로부터 읽을 파일 이름을 입력받아 읽기 모드("r")로 엽니다. 파일이 존재하지 않으면 오류 메시지를 출력하고 프로그램을 종료합니다. 이후 쓸 파일 이름을 입력받아 쓰기 모드("w")로 연 뒤, fgetc 함수로 원본 파일의 문자를 하나씩 읽어 fputc 함수로 대상 파일에 기록합니다. 파일의 끝(EOF)에 도달하면 복사를 마치고 두 파일을 모두 닫습니다.

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Enter the filename to open for reading
file3.txt
Enter the filename to open for writing
file1.txt
Contents copied to file1.txt

이처럼 fgetc와 fputc 함수만으로도 파일 복사 기능을 간단하게 구현할 수 있으며, 이는 C 언어 파일 입출력의 기본기를 익히는 데 좋은 예제가 됩니다.