1 / 24

本日の内容

本日の内容. ファイル処理の基本を学習しましょう。 ファイルへの出力: fprintf() ファイルからの入力 :fscanf(). ファイル処理. ファイルへの出力,ファイルからの入力について学習します。 「名前を付けて保存」,「上書き保存」,「ファイルを開く」,の関数を作ります。 これにより,「新規作成」,「ファイルを閉じる」,の機能も実現できます。. ファイル処理とは? 「ファイルから読み込む」. つまり,この仕組みを勉強するということです。. ファイルの内容を表示します. 「ファイルを開く」を選んで. ファイル名を指定して.

Download Presentation

本日の内容

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 本日の内容 • ファイル処理の基本を学習しましょう。 • ファイルへの出力:fprintf() • ファイルからの入力:fscanf()

  2. ファイル処理 • ファイルへの出力,ファイルからの入力について学習します。 • 「名前を付けて保存」,「上書き保存」,「ファイルを開く」,の関数を作ります。 • これにより,「新規作成」,「ファイルを閉じる」,の機能も実現できます。

  3. ファイル処理とは?「ファイルから読み込む」ファイル処理とは?「ファイルから読み込む」 • つまり,この仕組みを勉強するということです。 ファイルの内容を表示します 「ファイルを開く」を選んで ファイル名を指定して

  4. ファイル処理とは?「ファイルに書き込む」 • つまり,この仕組みを勉強するということです。 「名前を付けて保存」を選んで 新しいファイル名で保存します。 新しいファイル名を入力して

  5. ファイル処理とは?その時,コンピュータはどう動作しているの?ファイル処理とは?その時,コンピュータはどう動作しているの? • ファイルを読み込んだり,ファイルに書き込んだりする時に,コンピュータの中でどのようにデータ処理されているかを理解すると,C言語でのファイル処理のプログラムが理解しやすくなります。 ファイル処理 命令 ??

  6. ファイル処理とは?その時,コンピュータはどう動作しているの?ファイル処理とは?その時,コンピュータはどう動作しているの? メモ帳のための場所 メモ帳が起動されると・・ メインメモリ (主記憶) の中に・・・ メモ帳のための領域が作られます。

  7. メインメモリ メモ帳のための場所 ファイル処理とは?その時,コンピュータはどう動作しているのか? ハードディスク等 (補助記憶)の中 のファイルが,そ のメモリ領域に 読み込まれます。 test.txtの場所 ABC 「ファイル」→「開く」を選択し, そのファイルのための 場所が確保され, ファイル名を指定して開くと,

  8. メインメモリ メモ帳のための場所 test.txtの場所 ABC ファイル処理とは?その時,コンピュータはどう動作しているのか? 次に,メモリに読み込まれた内容を画面に表示する方法を考えます。 画面上の表示 • <手順> • メモリ内のデータが読み込まれた場所を指定 します。 • その場所から,データを変数へ入力します。 • 変数の値をprintf等を使い画面に表示します。

  9. メインメモリ メモ帳のための場所 test.txtの場所 ABC ファイル処理とは?その時,コンピュータはどう動作しているのか? メモリ内にファイルが読み込まれると,ファイル データのどの場所からデータを読み込むのか, どの場所に新しいデータを加えるのか,メモリ 内で場所の指定をする必要があります。 そこで,ファイルを開いた時,メモリ内での場所 を指定するために特別な変数を用意します。 これを「ファイルポインタ」といいます。 ファイルポインタ ファイルポインタは,最初はファイルデータの 先頭を指定しています。

  10. メインメモリ メモ帳のための場所 test.txtの場所 ABC ファイル処理とは?その時,コンピュータはどう動作しているのか? ファィルポインタが指定している場所からデー タを受け取り,変数へ代入します。この場合 は1行の文字列データを受け取ります。 ファイルポインタの指定場所から1行分のデータ を受け取り,変数へ代入するには,fgetsを使い ます。 fgets(変数名,最大文字数,ファイルポインタ名) ABCという1行データが変数へ読み込まれた 後は,ファイルポインタは自動的に次の行の 先頭(まだ読み込んでいない場所)に移動 します。 ファイルポインタ

  11. メインメモリ メモ帳のための場所 test.txtの場所 ABC ファイル処理とは?その時,コンピュータはどう動作しているのか? ファィルポインタが指定している場所からデー タを受け取り,変数へ代入します。この場合 は1行の文字列データを受け取ります。 ファイルポインタの指定場所から1行分のデータ を受け取り,変数へ代入するには,fgetsを使い ます。 fgets(変数名,最大文字数,ファイルポインタ名) ABCという1行データが変数へ読み込まれた 後は,ファイルポインタは自動的に次の行の 先頭(まだ読み込んでいない場所)に移動 します。 ファイルポインタ これを繰り返してデータを変数へ読み込みます。 変数値はprintfなどで画面に表示されます。

  12. メインメモリ メモ帳のための場所 test.txtの場所 test2.txtの場所 ABC ファイルポインタ① ファイル処理とは?その時,コンピュータはどう動作しているのか? 「名前を付けて保存」を選んで 新しいファイル名を入力すると・・・ ファイルポインタ② 新しいファイル名の領域が確保されて, ファイルポインタも別のものが用意されます。

  13. メインメモリ メモ帳のための場所 test.txtの場所 test2.txtの場所 ABC ファイルポインタ① ファイル処理とは?その時,コンピュータはどう動作しているのか? fgetsなどで,変数へ代入され,処理が 加えられている(例:文字の書き換えなど) とします。 書き換えられた変数値が,新しいファイル の場所,ファイルポインタが指している場所 に書き込まれます。fputsなどが使われます。 注意:上書き保存の時は,元のtest.txtの場所 DEF ファイル処理を終了する命令があったり,メモ帳自体を終了する時に,補助記憶へ書き込まれます。 ファイルポインタ②

  14. ファイル処理とは?その時,コンピュータはどう動作しているのか?ファイル処理とは?その時,コンピュータはどう動作しているのか? • 以上の,コンピュータ内での動作を整理します。 • ファイルを「開く」時 • 開くファイル名を入力する。 • メモリ内に領域が確保され,HDDなど補助記憶装置のファイルデータがその領域にコピーされる。 • メモリ上でのファイルデータの位置を表すファイルポインタ(fp)が割り当てられる。 • fpの位置からデータを変数へ読み込み,変数値を画面に表示したり処理したりする。 • ファイルに「保存する」(書き込む)時 • 保存するファイル名を指定する。 • メモリ内に領域が確保され,fpが割り当てられる。 • fpの位置にファイル保存したい変数値が書き込まれる。 • ファイル処理を終了したり,プログラム自体を終了した時,メモリ上の内容が,HDDなど補助記憶装置にファイルとして保存される。 • どちらの場合も,直接,補助記憶装置内のデータを処理しているわけではないことに注意!

  15. ファイル処理の手順 • ファイルポインタを準備する。 • ファイル中の,現在の読み書き位置を指定するためのポインタです。 • ファイルをオープンし,ファイルポインタに割り当てる。 • 使用するファイル名と利用目的(オープンモード)を指定してファイルを開きます(オープンします)。 • 読み込みの場合,ファイルがHDDなど補助記憶装置から主記憶に読み込まれます。書き込みの場合,そのための領域が主記憶に確保されます。その先頭位置をファイルポインタが指し示します。 • fopen()関数が用いられます。

  16. ファイル処理の手順 • ファイルポインタが指している領域からデータを読み込む(変数へ取り込む),またはその領域にデータ(変数の値)を書き込む,などの処理を行います。 • ファイル処理が終わったらファイルをクローズします。 • クローズすることにより,ファイルポインタとファイルとの関係が切れます。 • 主記憶中のファイルが補助記憶装置内へ保存されます。つまり,クローズしない限りファイルの変更は反映されません。 • fclose()関数を用います。

  17. #include<stdio.h> FILE *fp; fp=fopen(“ファイル名”, “オープンモード”); ファイルポインタの準備とファイルのオープン

  18. 重要なオープンモード

  19. ファイル入出力関数-1

  20. 演習 • ensyu10.cを完成させましょう。 • 「名前を付けて保存」関数output_file( )を完成させてください。 • 保存するデータ(変数)に注意しましょう。何をファイルへ保存する必要があるでしょうか?

  21. 演習 • ensyu11.cを完成させましょう。 • 「ファイルを開く」関数open_file( )を完成させてください。 • 目的のファイルがなかった場合,「ファイルが開けません」とメッセージを出してプログラムを終了するにはどうすればよいでしょうか?

  22. ファイルの内容の変更 • ファイルを開いて,内容を変更して,保存する場合は,次の手順によります。 • ファイルをrモードでopenする。 • ファイルの内容を変数へ読み込む。 • 変数の内容を操作(変更)する。 • ファイルをwモードでopenする。 • 変数の値をファイルへ書き込む。 • この時,最初と同じファイル名であれば「上書き保存」,異なるファイル名なら「名前を付けて保存」になります。

  23. 演習 • ensyu12.cを完成させましょう。 • ファイルを読み込んだ後,何らかの処理を加えたとします。 • 処理後のファイルを保存します。 • 「上書き保存」関数overwrite_file( )を完成させてください。 • 「上書き保存」か「名前を付けて保存」かを選択できるようにしましょう。

  24. 課題 • 「データの追加」を関数化してください。 • 「上書き保存」を選択した場合に,ファイル名を表示した上で,「本当に上書きして良いか」を確認してから保存するように,overwrite_file()を変更してください。 • 「名前を付けて保存」を選択した場合に,既に同名のファイルが存在したとき,再度ファイル名の入力を促すようにoutput_file()を変更して下さい。

More Related