先頭へ戻る
fopen | Programming Place Plus C言語編 標準ライブラリのリファレンス
Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(名前順)
Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(ヘッダ別)
先頭へ戻る
fopen関数
概要
|
ファイルを開く。
|
ヘッダ
|
stdio.h
|
形式
|
FILE* fopen(const char* restrict filename, const char* restrict mode);
|
引数
|
filename
|
ファイル名。
|
mode
|
モード。
|
戻り値
|
成功した場合は、オープンしたファイルを制御するための FILEオブジェクトへのポインタを返す。失敗した場合は、ヌルポインタを返す。
|
詳細
|
引数filename に指定した名前を持ったファイルをオープンし、ストリームを結びつける。
ファイル名は、環境に応じたファイルパスの表現を受け付ける。たとえば、Windows では "documents\\test.txt" や "test.txt" といった表記により、カレントディレクトリにある documentsディレクトリ内の test.txt を開くことができる。また、受け付けられることが保証された最大長は、FILENAME_MAXマクロで与えられている。
引数mode には、以下の指定を与えられる。
r |
テキストファイルを読み込み用に開く |
w |
テキストファイルを書き込み用に開く |
a |
テキストファイルを追記用に開く |
rb |
バイナリファイルを読み込み用に開く |
wb |
バイナリファイルを書き込み用に開く |
ab |
バイナリファイルを追記用に開く |
r+ |
テキストファイルを読み書き両用に開く |
w+ |
テキストファイルを読み書き両用に開く |
a+ |
テキストファイルを読み書き両用で追加あるいは作成する |
rb+ または r+b |
バイナリファイルを読み書き両用に開く |
wb+ または w+b |
バイナリファイルを読み書き両用に開く |
ab+ または a+b |
バイナリファイルを読み書き両用で追加あるいは作成する |
処理系によっては、これらのモード名の後ろに何らかの文字列を続ける形で、独自のモードを提供していることがある。たとえば、Visual Studio では、"r, ccs=UNICODE" のような形で、Unicode (UTF-16LE) のデータを入出力できる。
モードごとに、以下の表のような動作の違いがある。
読み取り |
できる |
できない |
できない |
できる |
できる |
できる |
書き込み |
できない |
できる |
できる |
できる |
できる |
できる |
開くとファイルの中身は… |
そのまま |
失われる |
そのまま |
そのまま |
失われる |
そのまま |
開くとファイルポジションは… |
先頭にある |
先頭にある |
終わりにある |
先頭にある |
先頭にある |
終わりにある |
ファイルが存在しないときに開こうとすると… |
失敗する |
空のファイルが作られる |
空のファイルが作られる |
失敗する |
空のファイルが作られる |
空のファイルが作られる |
|
注意
|
同時に開くことができるファイルの最大数が、FOPEN_MAXマクロで与えられている。
|
使用例
|
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE* fp = fopen( "hello.txt", "w" );
if( fp == NULL ){
fputs( "ファイルオープンに失敗しました。\n", stderr );
exit( EXIT_FAILURE );
}
if( fputs( "Hello, World\n", fp ) == EOF ){
fputs( "ファイルへの書き込みに失敗しました。\n", stderr );
exit( EXIT_FAILURE );
}
if( fclose( fp ) == EOF ){
fputs( "ファイルクローズに失敗しました。\n", stderr );
exit( EXIT_FAILURE );
}
return 0;
}
実行結果(標準出力)
実行結果(hello.txt)
Hello, World
|
関連
|
ファイルを閉じるには fclose関数を用いる。
|
解説章
|
第39章
|
参考リンク
更新履歴
- '2019/8/19
- fputs関数でファイルへ出力する際のエラーチェックを追加
- '2019/8/6
- 「コンパイラ」よりも「処理系」の方が適切ならば、「処理系」と書くように統一
- '2019/8/1
'2018/4/20 「NULL」という表記を「ヌルポインタ」に修正。
'2018/4/8 「詳細」にモードごとの動作をまとめた表を追加。
処理系独自のモードについて、VisualStudio での例を挙げた。
'2018/1/22 新規作成。
------------------------------------------------------------------------
標準ライブラリのリファレンス(名前順)のトップページへ
標準ライブラリのリファレンス(ヘッダ別)のトップページへ
C言語編のトップページへ
Programming Place Plus のトップページへ