C言語でのファイルのコピー方法


  1. fread()fwrite()を使用する方法: この方法では、元のファイルからデータを読み取り、別のファイルに書き込むためにfread()fwrite()関数を使用します。以下はコード例です:
#include <stdio.h>
#define BUFFER_SIZE 4096
int main() {
    FILE *source_file, *destination_file;
    char buffer[BUFFER_SIZE];
    size_t bytes_read;
    // 元のファイルを開く
    source_file = fopen("元のファイルパス", "rb");
    if (source_file == NULL) {
        perror("元のファイルを開けません");
        return 1;
    }
// コピー先のファイルを開く
    destination_file = fopen("コピー先のファイルパス", "wb");
    if (destination_file == NULL) {
        perror("コピー先のファイルを作成できません");
        return 1;
    }
// データを読み取り、コピー先のファイルに書き込む
    while ((bytes_read = fread(buffer, 1, BUFFER_SIZE, source_file)) > 0) {
        fwrite(buffer, 1, bytes_read, destination_file);
    }
// ファイルを閉じる
    fclose(source_file);
    fclose(destination_file);
    printf("ファイルのコピーが完了しました\n");
    return 0;
}
  1. getc()putc()を使用する方法: この方法では、getc()関数で元のファイルから1バイトずつデータを読み取り、putc()関数でコピー先のファイルに1バイトずつ書き込みます。以下はコード例です:
#include <stdio.h>
int main() {
    FILE *source_file, *destination_file;
    int character;
    // 元のファイルを開く
    source_file = fopen("元のファイルパス", "rb");
    if (source_file == NULL) {
        perror("元のファイルを開けません");
        return 1;
    }
// コピー先のファイルを開く
    destination_file = fopen("コピー先のファイルパス", "wb");
    if (destination_file == NULL) {
        perror("コピー先のファイルを作成できません");
        return 1;
    }
// データを読み取り、コピー先のファイルに書き込む
    while ((character = getc(source_file)) != EOF) {
        putc(character, destination_file);
    }
// ファイルを閉じる
    fclose(source_file);
    fclose(destination_file);
    printf("ファイルのコピーが完了しました\n");
    return 0;
}

上記の方法は、C言語でファイルをコピーするための一般的な方法です。fread()fwrite()を使用する方法は、バッファを使用して効率的にデータを読み書きすることができます。一方、getc()putc()を使用する方法は、1バイトずつ処理するため、小さなファイルのコピーに適しています。