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;
}
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バイトずつ処理するため、小さなファイルのコピーに適しています。