この章ではC言語におけるファイルの取り扱い方法について学習します。
これまではprintf関数などを使って、文字列や計算結果を画面に出力していましたが、その処理が終われば、データは失われてしまいます。
そこで、そのようなデータはファイルに保存しておけば後で確認したい時に便利です。
C言語におけるファイルの取り扱いの流れを説明します。
(1) ファイルをオープンします
(2)ファイルの読み書きをします
(3)ファイルをクローズします
この順序でファイルを操作を行います。
では例をみてみましょう。
初めに以下の構文でファイル構造体のポインタを作ります。
次に操作したいファイルを以下の構文でオープンします。
そして、このfopen関数をファイル構造体の変数に代入します。
この例ではwを使っていますが、このモードを使うとファイルの中身を上書きして、ファイルが無い時は新規作成してくれます。
wモードであればこの例の「net.txt」と言うファイルが自身のフォルダに無くても、自動的に作ってくれます。次の表を参考にしてください。
次にファイルを読み書きする方法について説明します。
ファイルに書き込むにはfprintf関数を使います。
fprintf関数はファイルポインタで指定したファイルに変換指定文字を使ってデータを書き込みます。
次はファイルをクローズする方法について説明します。
ファイルを開いた後には閉じなくてはいけません。
その時に使うのがfclose関数です。
次は以下の箇所の説明します。
結果は「net.txt」に変数iの値である8.1が書き込まれます。
次の例ではscanfで読み込んだデータをファイルに書き込みます。
while文の中にEOFという箇所がありますが、これはキーボードで
EOFの前に「!」が付いているので、
この例では以下の箇所です(スペースの都合でwhileの条件式を2行で書いていますが、1行で書いてもいいです)。
fscanf関数はファイルの終端になるとEOFを返します。
読み込む時にはfopen関数のオープンモードはrになります。
次の例はfputs関数でデータをファイルに書き込む方法について説明します。
結果は以下の通り、ファイルに書き込まれます。
もちろん、初めから1行で書き込む意図があるのならば
次の例は「net.txt」に書き込んだテキストファイルから指定した文字サイズだけを読み込むプログラムです。
そして、読み取るものが無くなるとNULLを返すので、NULLになったらwhile文を終了します。
読み取るときには
次の例は「net.txt」から1文字ずつ読み込むプログラムです。
fgetcは読み込みに成功すると、その読み込んだ1文字を返し、ファイルの終わりまで読んだ場合は、EOFを返します。