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

C 언어로 한 파일의 내용을 다른 파일에 복사하는 방법

C 파일 입출력(File I/O) — 파일 생성, 열기, 읽기, 쓰기, 닫기

C 파일 관리 개요

파일은 대량의 영구 데이터를 저장하는 데 사용됩니다. 다른 많은 프로그래밍 언어와 마찬가지로 C 언어도 다음과 같은 파일 관리 기능을 제공합니다.

  • 파일 생성
  • 파일 열기
  • 파일 읽기
  • 파일 쓰기
  • 파일 닫기

C의 주요 파일 관리 함수

C에서 가장 중요하게 사용되는 파일 관리 함수는 다음과 같습니다.

함수용도
fopen()새 파일을 만들거나 기존 파일 열기
fclose()파일 닫기
fprintf()파일에 데이터 블록 쓰기
fscanf()파일에서 데이터 블록 읽기
getc()파일에서 한 문자 읽기
putc()파일에 한 문자 쓰기
getw()파일에서 정수 하나 읽기
putw()파일에 정수 하나 쓰기
fseek()파일 포인터를 지정한 위치로 이동
ftell()파일 포인터의 현재 위치 반환
rewind()파일 포인터를 파일의 처음으로 이동

입력:
sourcefile = x1.txt
targefile = x2.txt
출력: File copied successfully.

프로그램 설명

이 프로그램은 한 파일의 내용을 다른 파일로 복사합니다. 먼저 복사할 원본 파일을 지정한 뒤, 원본 파일은 "읽기(r)" 모드로 열고 대상 파일은 "쓰기(w)" 모드로 엽니다. 그다음 fgetc()로 원본 파일을 한 문자씩 읽어 fputc()로 대상 파일에 차례대로 기록하면 복사가 완료됩니다. 파일 끝(EOF)에 도달하면 반복문이 종료되고, 두 파일을 모두 닫으면서 작업을 마무리합니다.

주요 처리 흐름

  1. 원본 파일을 읽기 모드로 열고, 실패 시 오류 메시지와 함께 종료합니다.
  2. 대상 파일을 쓰기 모드로 열고, 실패 시 이미 연 원본 파일을 닫은 후 종료합니다.
  3. 원본 파일의 내용을 문자 단위로 읽어 대상 파일에 기록합니다.
  4. 복사가 끝나면 성공 메시지를 출력하고 두 파일을 모두 닫습니다.

예제 코드

#include <stdio.h>
#include <stdlib.h>

int main() {
    int ch;
    FILE *source, *target;
    char source_file[] = "x1.txt";
    char target_file[] = "x2.txt";

    source = fopen(source_file, "r");
    if (source == NULL) {
        printf("Press any key to exit...\n");
        exit(EXIT_FAILURE);
    }

    target = fopen(target_file, "w");
    if (target == NULL) {
        fclose(source);
        printf("Press any key to exit...\n");
        exit(EXIT_FAILURE);
    }

    while ((ch = fgetc(source)) != EOF)
        fputc(ch, target);

    printf("File copied successfully.\n");
    fclose(source);
    fclose(target);
    return 0;
}

실행 결과

File copied successfully.

참고 사항

  • fgetc()int형 값을 반환하므로, EOF와 비교할 변수는 반드시 int형으로 선언해야 합니다. char형으로 선언하면 EOF 판별이 잘못될 수 있습니다.
  • 대상 파일이 이미 존재하는 경우 "쓰기(w)" 모드는 기존 내용을 모두 지우고 새로 작성하므로 주의해야 합니다.
  • 파일을 열었다면 성공 여부와 관계없이 반드시 fclose()로 닫아 리소스 누수를 방지하는 것이 좋습니다.