next up previous contents
Next: 26. バイナリーツリー Up: 25. ファイル入出力 Previous: 25.1.2 一文字の読み書き

25.2 課題 25

cd c を実行した後で( ~/c に移動した後で )、以下の課題を やってみよ。

課題 25.1
ファイルの読み込み

既存のファイル(kadai24_1.c)を読み込み専用にオープンし、全てのテキストを 読み込んだ後に、標準出力に再びそれらを出力せよ。

ヒント
malloc()を用いて、読み込んだ行を記憶させなければ ならない。更に、それらの行の管理のためにリストを使う必要がある。

課題 25.2
ファイルへの書き出し I

課題25.1を改良し、読み込んだテキストを別のファイル(test.out)に 書き出すようにせよ。また、実行した結果、新しいファイル test.out が作成されることを確認せよ。

課題 25.3
ファイルへの書き出し II

課題25.2 の読み込みファイルを変更し、kadai25_2.cpp を読み込むように せよ。これを実行した結果、前の test.out の中身が新たに kadai25_2.cの中身に変わっていることを確認せよ。

課題 25.4
ファイルの読み書き

これまでの課題プログラムを利用して以下のプログラムを作成しなさい。 前のtest.outの中身を画面に出力 した後に、test.out のファイルの末尾に更に kadai25_3.c の 中身を追加するようなプログラムを作成せよ。

作成したプログラムをメイルで creport まで送りなさい。題は、kadai25 とする事。

前回の復習
ファイル入出力

ファイルの入出力は、ファイル入出力用の変数を確保した上で、ファイルをその 変数と関連つけることが必要である。
    ifstream fin;
    ofstream fout;
    fstream  fs;
ifstream は読み込み専用、ofstreamは書き込み専用で、fstreamは 入出力が可能。

実際の入出力に先立って、ファイルをオープンしなければならない。

    fin.open( "file_name" );
上の例で、file_name はパスを含めたファイル名である。

ファイルをオープンする際には、読み書きを行う最初の位置がどこにある かを指示することも出来る。これをモードと言う。

    fout.open( "file_name" , ios::app );

モードには、書き込み ios::in, 書き出し ios::out, 追記 ios::app などがある。

こうしてファイルをオープンした後は、cin,cout などと同じように ファイルに対して入出力が行える。

    fout << " this is a test:" << var << endl;

また、ファイルの終わりは eof()で検知できる。

    while( ! fin.eof() ){
        fin >> var;
        ...
    }

ファイルとの結合を終わる時には、close() を使う。

    fin.close();



Noriyo Kanayama