fopen

ファイルをオープン (open) します.

#include <stdio.h>
FILE *fopen(
    const char * restrict filename,
    const char * restrict mode
);

fopen 関数はfilename が指す文字列を名前とするファイルを mode が指すモードでオープンし,そのファイルにストリーム (stream) を結び付けます.

引数 mode は文字列で指定します.定義されていないモードを指定した場合の動作は未定義です.

引数

  • filename: ファイル名
  • mode: モード (下記を参照してください)

モード

引数 mode に指定できるモードは以下の通りです.

モードファイル機能ファイルが
ないとき
"r"テキスト読み取りエラー
"w"テキスト書き込み新規作成
"a"テキスト追加書き込み新規作成
"rb"バイナリ読み取りエラー
"wb"バイナリ書き込み新規作成
"ab"バイナリ追加書き込み新規作成
"r+"テキスト更新(読み取り及び書き込み)エラー
"w+"テキスト更新(読み取り及び書き込み)新規作成
"a+"テキスト更新(追加書き込み)新規作成
"r+b" もしくは
"rb+"
バイナリ更新(読み取り及び書き込み)エラー
"w+b" もしくは
"wb+"
バイナリ更新(読み取り及び書き込み)新規作成
"a+b" もしくは
"ab+"
バイナリ更新(追加書き込み)新規作成

戻り値

C言語サンプルプログラム

fopen 関数を使用したサンプルプログラムを以下に示します.以下のサンプルプログラムでは fopen でファイルをオープンし,fputc で文字配列の文字をファイル書き込んだ後 fclose でファイルをクローズしています.

/* header files */
#include <stdio.h>
#include <stdlib.h>

/* main */
int main(void) {
    FILE *fp;
    char *filename = "sample.txt";
    char *output= "Snoopy";
    int i;

    /* ファイルのオープン */
    if ((fp = fopen(filename, "w")) == NULL) {
        fprintf(stderr, "%sのオープンに失敗しました.\n", filename);
        exit(EXIT_FAILURE);
    }

    /* "Snoopy"をsample.txtに出力 */
    for ( i = 0; i < 6; i++ ) {
        fputc(output[i], fp);
    }

    /* ファイルのクローズ */
    fclose(fp);

    return EXIT_SUCCESS;
}

実行例

sample.txt には以下のように書き込まれます.

Snoopy

cプログラマの必読書

たくさんあるc言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.

c実践プログラミング 第3版

c言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります. オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.


c言語ポインタ完全制覇 (標準プログラマーズライブラリ)

ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.