前回はファイルへの書き込みを行いました。非常に簡単でしたね。今回は読み出しをやってみます。そして、前回説明しなかったフラグの説明も行います。
では、今回の要点です。
では、いってみましょう。
前回 test.txt ファイルに "ファイルに書き込んじゃえ。" という文字列を書き込みました。今回は、これを読み出してみようと思います。
では、次のプログラムを見て下さい。
プログラム | 実行結果 |
---|---|
// File2.cpp #include <stdio.h> int main() { FILE* pFile; char buffer[128]; pFile = fopen("test.txt", "r"); fgets(buffer, 128, pFile); printf(buffer); fclose(pFile); return 0; } |
ファイルに書き込んじゃえ。 |
今回も、fgets という関数で簡単に読み込むことが出来ました。この関数はファイルからテキストを1行読み出す関数です。最後には0(ヌルキャラクタ)がつきます。fgets で読み込んで、それを printf で表示しました。
ファイルからデータを読み出してそのデータを利用するには、ファイルからメモリにデータを読み出す必要があります。つまり、読み出したデータを入れるための場所を用意してやる必要があるわけです。このような場所のことをバッファと呼びます。バッファは fgets の第1引数に渡します。そして、バッファの大きさを第2引数に渡します。
ここでは char buffer[128]; というバッファを作りました。128という数に特に意味はありませんが、多めにバッファをとっておけば期待通りに1行全部読み出せるだろう、というだけのことです。fgets では、バッファが足りない場合はバッファにおさまるだけを読み出します。バッファをオーバーして読み出すことはないので、安心を。
ファイルを開くときに、第2引数に "w", "r" といったフラグを指定しました。これらのフラグの意味を説明します。
フラグ | ファイルがある場合 | ファイルがない場合 |
---|---|---|
r | 読み出しモードで開きます。 | エラーになります。 |
w | そのファイルの内容がなくなり、書き込みモードで開きます。 | ファイルを作成し、書き込みモードで開きます。 |
a | ファイルの終端への書き込みモード(追加モード)で開きます。 | ファイルを作成し、書き込みモードで開きます。 |
r+ | 読み出しと書き込みの両方のモードで開きます。 | エラーになります。 |
w+ | そのファイルの内容がなくなり、読み出しと書き込みの両方のモードで開きます。 | ファイルを作成し、読み出しと書き込みの両方のモードで開きます。 |
a+ | 読み出しと追加の両方のモードで開きます。追加時は新しいデータをファイルに書き込む前に EOF マーカー(0x1A) を削除し、書き込みが完了すると EOF マーカーが復元されます。 | ファイルを作成し、読み出しと書き込みの両方のモードで開きます。 |
また、これらのフラグに続けて b を書くと、ファイルをバイナリモードで開きます。バイナリ、テキストモードについては、次回に話します。
a は add(追加する)の a でしょう。追加モードでは、常にファイルの終端に書き込みます。上書きしようとしても、ファイルの終端からの書き込みになってしまいます。まさに追加モードですね。
このうち、とりあえず r と w だけ覚えておけば、あまり困ることはないでしょう。r は read(読み出す)の r ですし、w は write(書き込む)の w ですから、覚えやすいです。まぁ、困ったときはヘルプに書いてありますので、そちらを見るといいでしょう。
今回はこれで終わりです。なんかこの2回内容が少なかったかもしれません。でも、別に手抜きってわけではありませんよ(笑)。この2回は、先ず簡単にファイル操作がどんなものかを見てもらうのが目的でした。次回からはファイルの2大モード、バイナリ、テキストについての話をします。これは非常に重要なので、是非とも理解しておいて下さい。
では、今回の要点を復習しましょう。
それでは、また次回まで。
第51章 ファイルのススメ | 第53章 テキストとバイナリ
Last update was done on 6.14
この講座の著作権はロベールが保有しています