8.ファイルのコピー ファイルの入出力の後は、ファイルからファイルへのコピーです。 但し、読み込み書き込みの関数は前回までとは異なります。 下記の31行を打ち込み後、コンパイルしてから実行します。 実行する前に注意です。実行するディレクトリに任意の文字を記述したファイルを indata.datとして作成しておいて下さい。 #include <stdio.h> main() { FILE *fp_in; FILE *fp_ot; char buf[8]; fp_in = fopen("indata.dat", "r"); if (fp_in == NULL) { printf("入力ファイルがオープン出来ません"); return; } fp_ot = fopen("otdata.dat", "w"); if (fp_ot == NULL) { printf("出力ファイルがオープン出来ません"); return; } while (1) { fread(buf, 1, 1, fp_in); if (feof(fp_in) != NULL) break; if (ferror(fp_in) != NULL) { printf("入力ファイルのリードでエラーです"); return; } fwrite(buf, 1, 1, fp_ot); if (ferror(fp_ot) != NULL) { printf("出力ファイルのライトでエラーです"); return; } } fclose(fp_in); fclose(fp_ot); } いかがですか? ファイルに正しく出力されましたか? 今回の学習項目 1)fread fgetsでは読み込みデータをテキストとして扱い、改行まで読み込むと いう仕様になっていますが、freadではバイナリーデータでも読み込む 事ができます。 これによりテキストではない制御コードが入ったファイルでも問題なく読み 込む事ができるのです。 もちろんテキストファイルも大丈夫です。 2)fwrite こちらもfputsに対してバイナリーデータも扱えるfwriteにしま した。