tmpfile | Programming Place Plus C言語編 標準ライブラリのリファレンス

トップページC言語編標準ライブラリのリファレンス(名前順)

トップページC言語編標準ライブラリのリファレンス(ヘッダ別)


tmpfile関数

概要

一時ファイルを作成する。

ヘッダ

stdio.h

形式

FILE* tmpfile(void);

引数

なし

戻り値

作成された一時ファイルと結びつけられたストリームを指すポインタ。失敗時はヌルポインタ。

詳細

既存のどのファイルとも異なる一時ファイルを作成し、fopen関数の第2引数に “wb+” を指定したかのような形でオープンする。
作成されたファイルは、プログラムの正常終了時、または fclose関数で明示的にクローズすると、自動的に削除される。

注意

abort関数の呼び出し等の異常終了時には、自動的に削除されるかどうかは処理系定義である。

一時ファイルは、実行環境ごとの事情が強く現れる機能である。環境ごとの事情をよく調査して使用すること。C言語の標準ではない方法で、より適したものがあるかもしれない。

作成できる一時ファイルの総数と、tmpnam関数で生成できる一意なファイル名の総数は共有しているかもしれない。つまり、両者を合わせて TMP_MAX の個数が限界数となっているかもしれない。また、オープンできるファイル総数を表す FOPEN_MAX による制約を受けるかもしれない。

使用例

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE* fp = tmpfile();
    if (fp == NULL) {
        fputs("失敗\n", stderr);
        exit(EXIT_FAILURE);
    }

    if (fputs("Test Message\n", fp) == EOF) {
        fputs("ファイルへの書き込みに失敗しました。\n", stderr);
        exit(EXIT_FAILURE);
    }

    // ファイルポジションを先頭に戻す
    if (fseek(fp, 0L, SEEK_SET) != 0) {
        fputs("ファイルポジションの移動に失敗しました。\n", stderr);
        exit(EXIT_FAILURE);
    }

    char buf[80];
    if (fgets(buf, sizeof(buf), fp) == NULL) {
        fputs("ファイルへの書き込みに失敗しました。\n", stderr);
        exit(EXIT_FAILURE);
    }

    puts(buf);
}

実行結果:

Test Message

関連

tmpnam関数を使って、一意なファイル名を生成できる。

解説章


参考リンク


更新履歴

’2018/4/20 「NULL」という表記を「ヌルポインタ」に修正。

’2018/4/18 全体的に文章を見直し修正。古い情報を削除。

’2018/4/2 「VisualC++」という表現を「VisualStudio」に統一。

’2018/1/22 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る