- 公開日:2018-2-10 最終更新日:2018-2-7
- プロナビTOP / プログラミング初心者向け技術系ノウハウ・まとめ
C言語では、ファイルからデータを入出力することができます。
ただし、いきなりファイルからデータを読み込んだり、書き込んだりすることはできません。
ファイルからデータを入出力するには、ファイル入出力の手続きが必要です。
そこで今回のC言語超入門では、ファイルからの入出力をするための手続きである、
オープン処理とクローズ処理について解説をしていきます。
なお、ファイルから1文字を入出力する方法についてはC言語超入門(第40回)、ファイルから文字列を入出力する方法については C言語超入門(第41回)を参照くださいませ。
ファイル処理の手順
ファイルを入出力するための処理は、大まかに以下の流れになります。
- ファイルのオープン
- ファイルの読み込み/書き込み
- ファイルのクローズ
ファイルのオープン処理では、読み書きをしたいファイル名を指定して、そのファイルを操作するための識別子(ファイルポインタ)を取得します。
以後、このファイルポインタを使って、ファイルの読み書きを行います。
ファイルの入出力処理が終わったら、ファイルのクローズ処理を行い、ファイルポインタを解放します。
ファイルのオープンに失敗したとき
C言語では、ファイルのオープン処理に失敗したとき(例えば、指定したファイルが存在しない、など)、自動でエラー処理は行われません。
ファイルのオープンに失敗した場合の処理は、プログラマーが用意する必要があります。
ファイルのエラー処理を正しく行いませんと、ファイルを破壊する可能性もありますから、十分に気を配ってプログラミングをしてくださいませ。
ファイルオープン、クローズを行う関数
ファイルをオープンするにはfopen()関数、クローズするにはfclose()関数を使います。
以下にfopen()関数とfclose()関数の使い方について、ポイントを絞ってご説明いたします。
fopen()関数
書式:
|
1 |
FILE *fopen(char *FileName, char *Mode) |
FileNameで指定したファイルを、Modeで指定したファイルモードでオープンします。
ファイルモードには、以下があります。
・ “r” ・・・ ファイル読み込み(ファイルがないときはエラーになる)
・ “w” ・・・ ファイル書き込み(ファイルが存在するときはファイルサイズが0になり、存在しなければ新規に作成される)
・ “a” ・・・ ファイルの最後に追加(ファイルが存在しなければ新規に作成される)
※バイナリファイルの読み書きをする場合は、”rb”、”wb”、”ab”にする
fopen関数は、ファイルが正常にオープンできたならファイルポインタを、失敗したとき(エラーのとき)はNULLを返します。
ファイルの読み書きは、すべてfopen関数で取得したファイルポインタを使って行います。
fclose()関数
書式:
|
1 |
int fclose(FILE *fp) |
fopen()関数でオープンしたファイルの利用が終わったら、fclose()関数を使ってクローズします。
ファイルのクローズ処理に失敗したとき、fclose()関数はEOFを返します。
C言語超入門の第39回まとめ
さて今回のC言語超入門では、ファイルからの入出力をするための手続きである、
オープン処理とクローズ処理について解説してきましたが、いかがでしたでしょうか。
ファイルから入出力する方法のうち、ファイル入出力の基本となるファイルオープン処理とクローズ処理について、もう一度、整理しておきます。
・ ファイルからデータを入出力するには、ファイルのオープン処理・クローズ処理が必要
・ ファイルへの入出力は、ファイルのオープン処理で取得したファイル識別子を使う
・ ファイルのオープンに失敗したときは、プログラマーがエラー処理を記述しなければならない
なお、ファイルから1文字を入出力する方法についてはC言語超入門(第40回)、ファイルから文字列を入出力する方法については C言語超入門(第41回)を参照くださいませ。
ステップ・バイ・ステップ。焦らず一歩ずつ進んでいきましょう。




































