std:: fopen
|
ヘッダーで定義
<cstdio>
|
||
|
std::
FILE
*
fopen
(
const
char
*
filename,
const
char
*
mode
)
;
|
||
filename で指定されたファイルを開き、そのファイルに関連付けられたファイルストリームを返します。 mode はファイルアクセスモードを決定するために使用されます。
目次 |
パラメータ
| filename | - | ファイルストリームに関連付けるファイル名 |
| mode | - | ファイルアクセスモードを決定する ヌル終端文字列 |
ファイルアクセスフラグ
|
ファイルアクセス
モード文字列 |
意味 | 説明 | ファイルが既に存在する場合の動作 | ファイルが存在しない場合の動作 |
|---|---|---|---|---|
| "r" | read | ファイルを読み取り用に開く | 先頭から読み取り | NULL を返し、エラーを設定 |
| "w" | write | ファイルを書き込み用に作成 | 内容を破棄 | 新規作成 |
| "a" | append | ファイルに追記 | 末尾に書き込み | 新規作成 |
| "r+" | read extended | ファイルを読み書き用に開く | 先頭から読み取り | NULL を返し、エラーを設定 |
| "w+" | write extended | ファイルを読み書き用に作成 | 内容を破棄 | 新規作成 |
| "a+" | append extended | ファイルを読み書き用に開く | 末尾に書き込み | 新規作成 |
|
ファイルアクセスモードフラグ
"b"
をオプションで指定してファイルを
バイナリモード
で開くことができる。このフラグはPOSIXシステムでは効果がないが、Windowsなどでは
'
\n
'
と
'
\x1A
'
の特殊な処理を無効にする。
追記ファイルアクセスモードでは、ファイル位置指示子の現在位置に関係なく、データはファイルの末尾に書き込まれる。 |
||||
| ファイルアクセスモードフラグ "x" はオプションで "w" または "w+" 指定子に追加できる。このフラグは、ファイルが存在する場合に上書きする代わりに関数が失敗するように強制する。 (C++17) | ||||
| モードが上記の文字列のいずれでもない場合、動作は未定義である。一部の実装では追加でサポートされるモードを定義している(例: Windows )。 | ||||
戻り値
成功した場合、開かれたファイルストリームを制御するオブジェクトへのポインタを返し、eofビットとerrorビットの両方がクリアされます。ストリームは、 filename が対話型デバイスを参照しない限り完全にバッファリングされます。
エラーの場合、ヌルポインタを返します。 POSIXでは この場合 errno が設定されることが要求されています。
注記
filename の形式は実装定義であり、必ずしもファイルを参照するとは限りません(例:コンソールやファイルシステムAPIを通じてアクセス可能な他のデバイスなど)。これらをサポートするプラットフォームでは、 filename は絶対パスまたは相対パスのファイルシステムパスを含む場合があります。
移植可能なディレクトリおよびファイル命名については、 C++ filesystem library または 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; // 注意: charではなくint、EOFを扱うために必要 while ((c = std::fgetc(fp)) != EOF) // 標準C I/Oファイル読み込みループ 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
関連項目
|
ファイルを閉じる
(関数) |
|
|
出力ストリームを実際のファイルと同期する
(関数) |
|
|
既存のストリームを別の名前で開く
(関数) |
|
|
Cドキュメント
for
fopen
|
|