tmpfile関数は、作業用ファイルを作成します。作成したファイルはクローズ時または、プログラム終了時に自動的に削除されます。
#include <stdio.h>
FILE *tmpfile(void);
引数はありません。
戻り値として、正常に作業用ファイルが作成できた場合はファイルポインタを、エラーの場合はNULLの値を返します。
作業用ファイルはバイナリ・リードライトモード(w+b)でオープンされています。
プログラム 例
#include <stdio.h> #include <string.h> int main(void) { FILE *tmp_fp; FILE *in_fp; FILE *out_fp; char path[100]; char buff[1024]; /* 作業用ファイル作成 */ tmp_fp = tmpfile(); while (1) { printf('入力ファイルのパス名を入力してください ==> '); scanf('%s', path); if (strcmp(path, 'end') != 0) { if ((in_fp = fopen(path, 'r')) != NULL) { while (fgets(buff, 1024, in_fp) != NULL) { /* 作業用ファイルに出力 */ fputs(buff, tmp_fp); } fclose(in_fp); } else { printf('%sファイルがオープンできません\n', path); } } else { break; } } printf('マージ出力するファイルのパス名を入力してください ==> '); scanf('%s', path); if ((out_fp = fopen(path, 'w')) != NULL) { /* 作業用ファイルのファイルオフセットをファイルの先頭に戻す */ rewind(tmp_fp); while (fgets(buff, 1024, tmp_fp) != NULL) { fputs(buff, out_fp); } fclose(out_fp); } else { printf('%sファイルがオープンできません\n', path); } fclose(tmp_fp); return 0; }
例の実行結果
$ cat temp_1.txt Hello World!!. Bye. $ $ cat temp_2.txt 0010067.500175.500021.92 0020088.000187.800024.95 0030054.300164.000020.19 $ $ ./tmpfile.exe 入力ファイルのパス名を入力してください ==> temp_1.txt 入力ファイルのパス名を入力してください ==> temp_2.txt 入力ファイルのパス名を入力してください ==> end マージ出力するファイルのパス名を入力してください ==> temp_mrg.txt $ $ cat temp_mrg.txt Hello World!!. Bye. 0010067.500175.500021.92 0020088.000187.800024.95 0030054.300164.000020.19 $