名前空間
変種
操作

std::fopen

提供: cppreference.com
< cpp‎ | io‎ | c
 
 
 
 
ヘッダ <cstdio> で定義
std::FILE* fopen( const char* filename, const char* mode );

filename で指定されたファイルを開き、そのファイルに紐付けられたファイルストリームを返します。 ファイルアクセスモードを決定するために mode が使用されます。

目次

[編集] 引数

filename - ファイルストリームを紐付けるファイル名
mode - ファイルアクセスモードを決定するヌル終端文字列
ファイルアクセスモード文字列 意味 説明 ファイルがすでに存在する場合の動作 ファイルが存在しない場合の動作
"r" read 読み込み用にファイルを開く 先頭から読み込み エラー
"w" write 書き込み用にファイルを作成 内容を破棄 新規作成
"a" append ファイルに追記 終端に書き込み 新規作成
"r+" read extended 読み込み/書き込み用にファイルを開く 先頭から読み込み エラー
"w+" write extended 読み込み/書き込み用にファイルを作成 内容を破棄 新規作成
"a+" append extended 読み込み/書き込み用にファイルを開く 終端に書き込み 新規作成
バイナリモードでファイルを開くためにファイルアクセスモード "b" を任意に指定できます。 このフラグは POSIX システムでは効果がありませんが、例えば Windows では '\n' および '\x1A' の特殊処理を無効化できます。
追記ファイルアクセスモードでは、データはファイル位置指示子の現在位置にかかわらずファイルの終端に書き込まれます。
ファイルアクセスモードフラグ "x" を "w" または "w+" 指定子に追加することができます。 このフラグはファイルが存在している場合に、それを上書きする代わりに関数を強制的に失敗させます。 (C++17)
モードが上記の文字列のいずれでもなければ動作は未定義です。 処理系によっては追加でサポートされているモードを定義していることがあります (例えば Windows)。

[編集] 戻り値

成功した場合は、開いたファイルストリームを制御するオブジェクトを指すポインタを返します。 EOF ビットとエラービットはどちらもクリアされています。 filename が対話型デバイスを参照していなければ、ストリームは完全バッファリングされます。

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

[編集] ノート

filename の書式は処理系定義であり、必ずしもファイルを参照するとは限りません (例えば、ファイルシステム API を通してアクセス可能なコンソールや別のデバイスかもしれません)。 プラットフォームがサポートする場合、 filename はファイルシステムの絶対パスまたは相対パスを含んでも構いません。

移植性のあるディレクトリとファイルの名前付けのためには、 C++ のファイルシステムライブラリboost.filesystem を参照してください。

[編集]

#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    FILE* fp = fopen("test.txt", "r");
    if(!fp) {
        perror("File opening failed");
        return EXIT_FAILURE;
    }
 
    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 reached successfully");
 
    fclose(fp);
}


[編集] 関連項目

ファイルを閉じます
(関数) [edit]
出力ストリームを実際のファイルと同期させます
(関数) [edit]
既存のストリームを別の名前で開きます
(関数) [edit]