C言語でファイルの内容を別のファイルにコピーする方法|サンプルコード付きで解説
C言語のファイル入出力:作成・オープン・読み書き・クローズ
ファイルは、大量のデータを永続的に保存するために使われます。他の多くのプログラミング言語と同様に、C言語でも以下のようなファイル管理機能が提供されています。
- ファイルの作成
- ファイルのオープン(開く)
- ファイルの読み込み
- ファイルへの書き込み
- ファイルのクローズ(閉じる)
主なファイル管理関数の一覧
C言語で利用できる代表的なファイル管理関数は以下のとおりです。
| 関数 | 用途 |
|---|---|
| fopen() | 新しいファイルを作成する、または既存のファイルを開く |
| fclose() | ファイルを閉じる |
| fprintf() | ファイルにデータブロックを書き込む |
| fscanf() | ファイルからデータブロックを読み込む |
| getc() | ファイルから1文字読み込む |
| putc() | ファイルに1文字書き込む |
| getw() | ファイルから整数値を読み込む |
| putw() | ファイルに整数値を書き込む |
| fseek() | ファイルポインタの位置を指定した場所へ移動する |
| ftell() | ファイルポインタの現在位置を返す |
| rewind() | ファイルポインタをファイルの先頭に戻す |
実行例
入力:
sourcefile = x1.txt
targetfile = x2.txt
出力:File copied successfully.(ファイルのコピーが完了しました)
プログラムの処理の流れ
このプログラムでは、あるファイルの内容を別のファイルへコピーします。まずコピー元のファイルを「読み取りモード(r)」で開き、同時にコピー先のファイルを「書き込みモード(w)」で開きます。その後、fgetc() でコピー元から1文字ずつ読み込みながら、fputc() でコピー先へ順番に書き込んでいくことで、ファイル全体の複製を作成します。
コピー元ファイルが存在しない場合や、コピー先ファイルを開けない場合は、エラーメッセージを表示してプログラムを終了します。
サンプルコード
#include <iostream>
#include <stdlib.h>
using namespace std;
int main() {
char 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;
}
注意点
fgetc() の戻り値は int 型であり、ファイル終端を表す EOF を正しく判定するためには、受け取る変数 ch を char ではなく int として宣言するのが安全です。また、純粋なC言語のプログラムとして記述する場合は、<iostream> や using namespace std; は不要で、<stdio.h> と <stdlib.h> のインクルードだけで十分です。
-
使用中のファイル:「ファイルが別のプログラムで開かれているため、アクションを完了できません」エラーの解決策
Windowsタスクマネージャーの「パフォーマンス」タブを開くと、コンピュータが現在実行している操作や処理の状況を確認できます。しかし、Windowsは常に多数のタスクを並行して処理しているため、特定の操作の正確な進行状況が正しく反映されないことがあります。その結果、ファイルを開いていたプログラムをすでに閉じた後でも、次のようなエラーが表示され続けるケースがあります。 使用中のファイル – この操作は完了できません。ファイルが別のプログラムで開かれています このエラーは、ファイルだけでなくフォルダに対しても発生することがあります。警告を消すためにWindowsやエクスプローラーを再起動しなけ
-
【解決】「ファイルが別のプログラムで開かれています」エラーの直し方
「ファイルが別のプログラムで開かれています」エラーとはファイルに対して操作を実行しようとした際に、そのファイルが別のプログラムによってアクセスされていると、「ファイルが別のプログラムで開かれています」というエラーが表示され、タスクや操作を実行できなくなります。これはコンピューティングにおいて古くから存在する基本的な仕組みで、主にデータの不整合を防ぐために設けられています。しかし、実際にはどのアプリケーションもそのファイルを使用していないのにエラーが発生する場合、厄介な問題となります。ファイルがバックグラウンドの隠れたサービスによって使用されている可能性や、バグが原因で操作が妨げられている可能性