C言語,tmpfile()関数でテンポラリファイルを作成する

スポンサーリンク

鍛錬 742

C言語,tmpfile()関数でテンポラリファイルを作成する

テンポラリファイル(一時ファイル)を作成するには、tmpfile()関数を使用します。
 
以下は、tmpfile()関数についてです。

#include <stdio.h>

FILE *tmpfile(void);
 

 
テンポラリファイルは、「w+b」モード(バイナリ,読み書き両用)で作成されます。

作成されたテンポラリファイルは、ファイルをクローズするかプログラムが終了すると自動的に削除されます。

引数

引き数はありません。

戻り値

以下は、戻り値についてです。

戻り値
FILE 成功した場合 ファイルポインタ
エラーの場合 NULL
 
スポンサーリンク

プログラム

以下は、テンポラリファイルを作成するプログラム、test_tmpfile.c です。

今回は、テンポラリファイルを作成後、文字列「Hello」を書き込んでいます。

// include
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

// main
int main(void)
{
	char wbuf[256] = "";
	char rbuf[256] = "";
	int ret;
	FILE *fp;
	
	// テンポラリファイルを作成
	fp = tmpfile();
	if (fp == NULL) {
		perror("tmpfile");
		exit(EXIT_FAILURE);
	}
	
	// 文字列を書き込み
	strncpy(wbuf, "Hello", sizeof(wbuf) - 1);
	fprintf(fp, "%s\n", wbuf);
	fflush(fp);
	
	// ファイル位置表示子を先頭にセット
	ret = fseek(fp, 0L, SEEK_SET);
	if (ret == -1) {
		perror("fseek");
		fclose(fp);
		exit(EXIT_FAILURE);
	}
	
	// ファイル内容を読込
	while (fgets(rbuf, sizeof(rbuf), fp) != NULL) {
		printf("%s", rbuf);
	}
	
	// ファイルクローズ
	ret = fclose(fp);
	if (ret != 0) {
		perror("fclose");
		exit(EXIT_FAILURE);
	}
	
	return 0;
}

実行結果

以下は、プログラム test_tmpfile.c を実行しています。

***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -Wall -Wextra test_tmpfile.c -o test_tmpfile
***@ubuntu:~/***/test/c$ ./test_tmpfile
Hello

 
上記に示した通り、テンポラリファイルを作成し、ファイルへの書き込みと読み込みを行うことができました。

スポンサーリンク

シェアする

フォローする