C++
 Computer >> コンピューター >  >> プログラミング >> C++

C言語のtmpfile()関数とは?一時ファイルの作成方法をわかりやすく解説

C言語のtmpfile()関数は、バイナリ更新モードで一時ファイルを作成するための標準ライブラリ関数です。この関数はstdio.hヘッダーファイル内で宣言されています。一時ファイルを作成できない場合には、必ずNULLポインタを返します。また、作成された一時ファイルはプログラムの終了直後に自動的に削除されるため、開発者が明示的に削除処理を記述する必要がありません。

構文

FILE *tmpfile(void)

戻り値

ファイルの作成に成功した場合、この関数は作成された一時ファイルへのストリームポインタ(FILE*型)を返します。逆に、ディスク容量不足などの理由でファイルを作成できなかった場合には、NULLポインタが返されます。

アルゴリズム

開始。
  文字型の配列変数 c[] を宣言し、文字列データを格納する。
  整数変数 i ← 0 を初期化する。
  FILE型へのポインタ newfile を宣言する。
  tmpfile() 関数を呼び出し、newfile を一時ファイルとして作成する。
  fopen() 関数を呼び出し、newfile ポインタを使って nfile.txt を書き込みモードで開く。
  もし (newfile == NULL) ならば
    「Error in creating temporary file」と出力する。
    0 を返して終了する。
  「Temporary file created successfully」と出力する。
  (c[i] != '\0') である間、以下を繰り返す
    配列 c[] のデータを順にファイルポインタ newfile へ書き込む。
    i をインクリメントする。
  fclose() 関数を呼び出してファイルポインタを閉じる。
  fopen() 関数を呼び出し、newfile ポインタを使って nfile.txt を読み取りモードで開く。
  rewind() 関数を呼び出し、ストリームの位置をファイルの先頭に戻す。
  (!feof(newfile)) である間、以下を繰り返す
    putchar() 関数を呼び出して、ファイルポインタ newfile の内容をすべて出力する。
  fclose() 関数を呼び出してファイルポインタを閉じる。
終了。

サンプルコード

#include <stdio.h>
int main() {
    char c[] = "Tutorials Point";
    int i = 0;
    FILE* newfile = tmpfile(); // ファイルポインタを一時ファイルとして作成
    newfile = fopen("nfile.txt", "w");
    if (newfile == NULL) {
        puts("Error in creating temporary file");
        return 0;
    }
    puts("Temporary file created successfully");
    while (c[i] != '\0') {
        fputc(c[i], newfile);
        i++;
    }
    fclose(newfile);
    newfile = fopen("nfile.txt", "r");
    rewind(newfile); // ストリームの先頭へポインタを移動
    while (!feof(newfile))
        putchar(fgetc(newfile));
    fclose(newfile); // ファイルポインタを閉じる
}

実行結果

Temporary file created successfully
Tutorials Point

tmpfile()関数を使う際のポイント

  • 一時ファイルは wb+(バイナリ読み書き両用)モードで自動的に開かれます。
  • fclose() でストリームを閉じたとき、またはプログラムが正常終了したときに、一時ファイルは自動的に削除されます。
  • ファイル名はシステムが自動的に生成するため、既存のファイルとの名前衝突を心配する必要がありません。
  • 作成された一時ファイルの場所は処理系依存であり、多くの環境ではOSの一時ディレクトリなどに配置されます。
  1. PHPのzip_close()関数とは?ZIPファイルアーカイブを閉じる方法を解説

    概要PHPのzip_close()関数は、zip_open()関数によって開かれたZIPファイルアーカイブを閉じるために使用されます。ZIPファイルへの操作が完了したら、この関数を呼び出してリソースを適切に解放するのが良い作法とされています。構文zip_close(zip_file)パラメータzip_file − zip_open()で開いたZIPファイルリソースを指定します。ここには、閉じたい対象となるファイルを渡します。戻り値zip_close()関数は戻り値を返しません。単純に、指定されたZIPファイルリソースを閉じ、システムリソースを解放するだけの関数です。使用例以下は、zip_ope

  2. PHPのfopen()関数とは?構文・モード一覧・使い方をわかりやすく解説

    fopen()関数は、PHPでファイルまたはURLを開くための組み込み関数です。ファイル操作の入り口となる重要な関数で、処理に失敗した場合はFALSEを返し、エラーを出力します。エラー表示を非表示にしたい場合は、関数名の前に「@」を付けてください。 構文 fopen(file_path, mode, include_path, context) パラメータ file_path − 開きたいファイルへのパスを指定します。 mode − ファイルへのアクセス方式(モード)を指定します。主なモードは以下のとおりです。 r − 読み込み専用。ファイルポインタはファイルの先頭に置かれます。 r+ −