fopen

ファイルをオープンする。

関数
FILE *fopen(
  const char *fname, 
  const char *mode
);

戻値
開いたファイルへのポインタを返す。
エラーの場合(開けなかった場合)はNULLを返す。

引数
fname
ファイル名。

mode
下記のファイルアクセスモードを指定する。

(1) "r"
読み出しモードで開く。
ファイルがない場合はエラーになる。

(2) "w"
書き込みモードで空のファイルを開く。
ファイルがある場合、そのファイルの内容は破壊される。

(3) "a"
ファイルの終端への追加書き込みモードで開く。
ファイルがない場合は新規に作成する。
書き込み操作は必ずファイルの終端からになり、既存データには上書きされない。
新しいデータをファイルに書き込む前にEOFマーカー(以下[EOF]と書く)を削除しない。
追加されても元の[EOF]までのデータが表示され、追加後のデータは表示されない。
ファイルの末尾にEOF(0x1A)がある場合は今では少ない。

(4) "r+"
既存ファイルに対して読み書き両用モードで開く。

(5) "w+"
読み書き両用のモードで空のファイルを作成する。
ファイルが既にある場合、そのファイルの内容は破壊される。

(6) "a+"
読み出しと追加の両方のモードで開く。
ファイルがない場合は新規に作成する。
書き込み操作は必ずファイルの終端からになり、既存データには上書きされない。
追加データを書き込む前に[EOF]を削除し、書き込みが完了すると[EOF]が復元される。
追加後はTYPEコマンドでファイル中のすべてのデータを表示できる。
"a+"モードは[Ctrl]+[Z]で終了するファイルや末尾に[EOF]があるファイルに使う。
ファイルの末尾にEOF(0x1A)がある場合は今では少ない。

拡張仕様
mode文字列中に以下の文字を指定すると改行文字の変換モードを指定できる。
指定は"rb"や"wb"や"r+b"という形になる。"rb+"でもよい。

(1) t
テキストモード(変換モード)でファイルを開く。これがデフォルトである。
入力時にはCR/LFシーケンスはLFに変換される。
出力時にはLFはCR/LFシーケンスに変換される。
[Ctrl]+[Z]は入力時にEOF(0x1A)として解釈される。

(2) b
バイナリモード(無変換モード)でファイルを開く。
CR/LFシーケンスの変換は行われない。


サンプル fp = fopen(fname, "r"); //テキスト読込 fp = fopen(argv[2], "w"); //テキスト書込 fp = fopen(argv[1], "rb"); //バイナリ読込 fp = fopen(argv[1], "wb"); //バイナリ書込 fp = fopen(argv[1], "rb+"); //バイナリ読込更新