fopen | Programming Place Plus C言語編 標準ライブラリのリファレンス

トップページC言語編標準ライブラリのリファレンス(名前順)

トップページ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) のデータを入出力できる。

モードごとに、以下の表のような動作の違いがある。

操作 r、rb w、wb a、ab r+、rb+、r+b w+、wb+、w+b a+、ab+、a+b
読み取り できる できない できない できる できる できる
書き込み できない できる できる できる できる できる
開くとファイルの中身は… そのまま 失われる そのまま そのまま 失われる そのまま
開くとファイルポジションは… 先頭にある 先頭にある 終わりにある 先頭にある 先頭にある 終わりにある
ファイルが存在しないときに開こうとすると… 失敗する 空のファイルが作られる 空のファイルが作られる 失敗する 空のファイルが作られる 空のファイルが作られる

注意

同時に開くことができるファイルの最大数が、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);
    }
}

実行結果(標準出力)

実行結果(hello.txt)

Hello, World

関連

ファイルを閉じるには fclose関数を用いる。

解説章

第39章


参考リンク


更新履歴

’2018/4/20 「NULL」という表記を「ヌルポインタ」に修正。

’2018/4/8 「詳細」にモードごとの動作をまとめた表を追加。
処理系独自のモードについて、VisualStudio での例を挙げた。

’2018/1/22 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る