名前空間
変種
操作

std::fopen

From cppreference.com
< cpp‎ | io‎ | c
 
 
 
C形式I/O
型とオブジェクト
関数
ファイルアクセス
直接入出力
非書式化入出力
書式付き入力
(C++11)(C++11)(C++11)    
(C++11)(C++11)(C++11)    
書式付き出力
ファイルポジショニング
エラーハンドリング
ファイル操作
 
ヘッダ<cstdio>で定義
std::FILE* fopen( const char* filename, const char* mode );

指定された filename のファイルをオープンし、そのファイルに関連付けられたファイルストリームを返します。mode はファイルアクセスモードを決定するために使用されます。

目次

[編集] パラメータ

filename - ファイルストリームを関連付けるファイル名
モード - ファイルアクセスモードを決定するヌル終端文字列

[編集] ファイルアクセスフラグ

ファイルアクセス
モード文字列
意味 説明 ファイルが存在する場合のアクション
既に存在する場合
ファイルが存在する場合のアクション
存在しない場合
"r" read 読み込み用にファイルを開く 最初から読み込む NULL を返し、エラーを設定します。
"w" write 書き込み用にファイルを作成する 内容を破棄する 新規作成する
"a" append ファイルに追記する 末尾に書き込む 新規作成する
"r+" 拡張読み込み 読み書き用にファイルを開く 最初から読み込む NULL を返し、エラーを設定します。
"w+" 拡張書き込み 読み書き用にファイルを作成する 内容を破棄する 新規作成する
"a+" 拡張追記 読み書き用にファイルを開く 末尾に書き込む 新規作成する
ファイルアクセスモードフラグ "b" は、オプションでファイルをバイナリモードで開くために指定できます。このフラグはPOSIXシステムでは影響しませんが、Windowsなどでは、'\n' および '\x1A' の特別な処理を無効にします。
追記ファイルアクセスモードでは、ファイル位置指示子の現在の位置に関係なく、データはファイルの末尾に書き込まれます。
ファイルアクセスモードフラグ "x" は、オプションで "w" または "w+" 指定子に追加できます。このフラグは、ファイルがすでに存在する場合に上書きする代わりに、関数の失敗を強制します。(C++17)
モードが上記リストのいずれかの文字列でない場合、動作は未定義です。一部の実装では、追加のサポートされているモードが定義されています(例:Windows)。

[編集] 戻り値

成功した場合、オープンされたファイルストリームを制御するオブジェクトへのポインタを返します。このとき、eofビットとエラービットはクリアされます。ストリームは、filename が対話型デバイスを参照しない限り、フルバッファリングされます。

エラーが発生した場合、ヌルポインタを返します。POSIX では、この場合に errno が設定されることが要求されています。

[編集] 注記

filename の形式は実装定義であり、必ずしもファイルを参照するとは限りません(例:コンソールやファイルシステムAPIを通じてアクセス可能な別のデバイスである可能性があります)。それらをサポートするプラットフォームでは、filename に絶対パスまたは相対パスを含めることができます。

移植性の高いディレクトリおよびファイル命名については、C++ファイルシステムライブラリまたはboost.filesystemを参照してください。

[編集]

#include <cstdio>
#include <cstdlib>
 
int main()
{
    int is_ok = EXIT_FAILURE;
    FILE* fp = std::fopen("/tmp/test.txt", "w+");
    if (!fp)
    {
        std::perror("File opening failed");
        return is_ok;
    }
 
    int c; // Note: int, not char, required to handle EOF
    while ((c = std::fgetc(fp)) != EOF) // Standard C I/O file reading loop
        std::putchar(c);
 
    if (std::ferror(fp))
        std::puts("I/O error when reading");
    else if (std::feof(fp))
    {
        std::puts("End of file reached successfully");
        is_ok = EXIT_SUCCESS;
    }
 
    std::fclose(fp);
    return is_ok;
}

出力

End of file reached successfully

[編集] 関連項目

ファイルを閉じる
(関数) [編集]
出力ストリームを実際のファイルと同期させる
(関数) [編集]
既存のストリームを別の名前で開く
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)