Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラミング演習I 2003年7月2日(第11回) 木村巌.

Similar presentations


Presentation on theme: "プログラミング演習I 2003年7月2日(第11回) 木村巌."— Presentation transcript:

1 プログラミング演習I 2003年7月2日(第11回) 木村巌

2 今日やること ファイル入出力の勉強 ファイルへのopen, 読み書き、close 教科書12章

3 知識編:ファイル入出力の手順 ファイルをopenする(それに伴うストリームが割り当てられる) ファイル(に伴うストリーム)を読み書きする
ファイル(に伴うストリーム)をcloseする 以下単に、「ファイルを読む」「ファイルに書き出す」などという

4 ファイル名 ファイルシステムの中で、特定のファイルを指定するには? プログラミング演習I第二回のスライド12枚目を参照

5 ファイルのオープン:fopen() FILE *fopen (char *filename, char *mode);
filenameという文字列で指定されるファイルを、modeで指定されるモードで開く そのファイルをストリームに割り当てる そのストリームを表すFILE型のデータへのポインタを返す

6 ファイルを開くときのモード Mode 意味 r w a r+ w+ a+ 入力のため既存のファイルをオープン
出力のためファイルの新規作成、または既存ファイルの切りつめ a 出力のためファイルの新規作成、または既存ファイルへの追加 r+ 更新(読み書き両方)のための既存ファイルの先頭からのオープン w+ 更新のためのファイルの新規作成、または既存ファイルの切りつめ a+ 更新のためのファイルの新規作成、または既存ファイルへの追加

7 fopen()のモードの属性 属性 モード r w a r+ w+ a+ ○ × 指定ファイルが既存ファイルである 既存ファイルの内容の喪失
ストリームの読み取り許可 ストリームへの書き込み許可 ストリームの終わりでのみ書き込み許可

8 指定されたfileを表示する例 プログラム例「mycat.c」参照 教科書p.228、リスト12-1 なんでmycat?
Unixには、ファイルを表示するcatというコマンドがある. Concatinateの略 それの自分で書いた機能限定版なのでmycat.

9 ファイルからデータを読みこむ例 プログラム例「mean.c」を参照 前回のレポート課題を、さらにファイルからデータを読み込めるように変更
読み込んだデータの平均を計算する

10 ファイルをコピーする例 プログラム例「mycp.c」参照 教科書p.230, リスト12-2参照
ファイル名をプログラムの引数として受け取るように変更した Unixの世界ではこちらが一般的 教科書p.234~、§12.5参照 Unixでは、cpというコマンドがファイルをコピーするもの

11 ファイルとの1文字入出力 int fgetc(FILE *), int getc(FILE *)で、ストリームからの1文字入力
最後まで読み込むとEOFを返す ファイルの文字数を数える例「mywc.c」参照 ファイルの大きさを知るには、system callのstat(2)を使う手もある.より詳細な情報も得られる

12 まとめ 主にファイルの入出力を学んだ ファイルのオープンfopen(), ファイルのクローズfclose()
ファイルからの読み込み:fgets() ファイルへの書式付出力:fprintf()

13 補足 printf()はstdoutへ書き出す, scanf()はstdinから読み込む
fprintf()は最初の引数で指定するストリームへ書き出す、fscanf()は最初の引数で指定するストリームから読み込む sprintf()は最初の引数で指定するcharの配列へ書き出す、sscanf()は最初の引数で指定するcharの配列から読み込む

14 教科書で残っている範囲 テキストの内容でまだやってないのは、 文字列に関する箇所 ポインタ 次回はこの2つの予定です

15 レポート課題 課題:mycat.cを改造して、各行に行番号を表示するようにせよ.
いつもどおり木村までメールで送ること.締め切りは7/8(火)一杯.質問・感想なども、随時受け付けます. 添付ではなく、メール本文に書いてくれたほうが助かります.


Download ppt "プログラミング演習I 2003年7月2日(第11回) 木村巌."

Similar presentations


Ads by Google