名前空間
変種
操作

fclose

From cppreference.com
< c‎ | io
 
 
ファイル入出力
型とオブジェクト
        
関数
ファイルアクセス
(C95)
非書式化入出力
(C95)(C95)
(C95)
(C95)(C95)
(C95)
(C95)

書式付き入力
直接入出力
書式付き出力
ファイルポジショニング
エラーハンドリング
ファイル操作
 
ヘッダー <stdio.h> で定義
int fclose( FILE* stream );

指定されたファイルストリームを閉じます。書き込まれていないバッファリングされたデータはすべてOSにフラッシュされます。読み込まれていないバッファリングされたデータは破棄されます。

操作が成功したかどうかにかかわらず、ストリームはファイルと関連付けられなくなり、setbuf または setvbuf によって割り当てられたバッファ(もしあれば)も、自動割り当てが使用されていた場合は、関連付け解除され解放されます。

fclose が返された後にポインタ stream の値が使用された場合、動作は未定義です。

目次

[編集] パラメーター

stream - 閉じるファイルストリーム

[編集] 戻り値

成功した場合は 0、それ以外の場合は EOF

[編集]

#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    const char* fname = "/tmp/unique_name.txt"; // or tmpnam(NULL);
    int is_ok = EXIT_FAILURE;
 
    FILE* fp = fopen(fname, "w+");
    if (!fp)
    {
        perror("File opening failed");
        return is_ok;
    }
    fputs("Hello, world!\n", fp);
    rewind(fp);
 
    int c; // note: int, not char, required to handle EOF
    while ((c = fgetc(fp)) != EOF) // standard C I/O file reading loop
        putchar(c);
 
    if (ferror(fp))
        puts("I/O error when reading");
    else if (feof(fp))
    {
        puts("End of file is reached successfully");
        is_ok = EXIT_SUCCESS;
    }
 
    fclose(fp);
    remove(fname);
    return is_ok;
}

実行結果の例

Hello, world!
End of file is reached successfully

[編集] 参考文献

  • C23標準 (ISO/IEC 9899:2024)
  • 7.21.5.1 fclose 関数 (p: TBD)
  • C17標準 (ISO/IEC 9899:2018)
  • 7.21.5.1 fclose 関数 (p: TBD)
  • C11標準 (ISO/IEC 9899:2011)
  • 7.21.5.1 fclose 関数 (p: 304)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.19.5.1 fclose 関数 (p: 270)
  • C89/C90標準 (ISO/IEC 9899:1990)
  • 4.9.5.1 fclose 関数

[編集] 関連項目

ファイルを開く
(関数) [編集]
既存のストリームを別の名前で開く
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)