pptファイル

Download Report

Transcript pptファイル

ファーストイヤー・セミナーⅡ

第12回 ファイル処理

前回のレポート解答例  0から入力した数値まで表示 while 文を使って入力した 数値まで繰り返し

前回のレポート解答例  納得するまでおみくじを引く if 文を使ってランダムに 結果を表示 0 が入力されたら終了

ファイル処理  「ファイル」とは、プログラム等で処理するデータをひとま とめにして記録・保存したもの  これまではキーボードと画面(標準入出力)でデータの入 力、出力をおこなってきたが、ファイルから入力・ファイル へ出力することもできる

ファイル処理の手順  ファイルへのデータ入出力は、以下のような手順でおこ なわれる

ファイル位置指定子の宣言  ファイルを用いた入出力処理をおこなう場合、ファイル位 置指定子を宣言する   書式: FILE *ファイル位置指定子 例) FILE *fp  参考) FILE はファイル入出力をおこなう構造体としてstdio.hの 中で定義されている ファイル位置指定子は構造体FILEへの変数として宣言さ れる

ファイルのオープン   ファイル処理をおこなう場合、「ファイルをオープン」する 必要がある ファイル処理をおこなうために入出力可能な状態にする、 と思えばよい  書式: ファイル位置指定子 = fopen( “ ファイル名”, “ モード”); 例) fp = fopen( “ data.txt

” , “ r ” );

ファイルのオープンとモード  ファイル処理のモードには「書き込み」「読み込み」「追加」な どがある

ファイルのクローズ  ファイルの入出力処理が終了したらファイルを閉じる(クロー ズする)  書式: fclose(ファイル位置指定子);  例) fclose (fp);

練習   data.txt という名前のファイルをオープンし、何もせずにクロー ズする(ファイルをオープンする際に、ファイルがなければ自 動的に作成される) 注:ファイルを作成、保存する場所を指定しておくこと。Mドラ イブなら「M:\\ファイル名」とする

ファイルがオープンできないときの処理  何らかの理由でファイルがオープンできない場合があるので、 その際に正常に終了させるため以下の文にしておく ← 「 exit 」を使用するために必要 ↓ おまじないと思って書いておく

ファイルへの入出力  ファイルにデータを書き込んだり、ファイルからデータを読み 出したりするには以下のような関数を使う

ファイルへのデータ書き込み   ファイルへの入力には「fputc」、「fputs」、「fprintf」などがある 今回は「fprintf」の使い方を学ぼう  書式: fprintf (ファイル位置指定子, “ 書式文字列”, 引数1, 引数2, … ); 例)整数型の変数x, y を位置指定子 fp のファイルに入力 fprintf (fp, “ %d %d ” , x, y);

ファイルに整数データを書き込む(1)  キーボードから整数を10個入力し、ファイルに保存

実行結果の例(1)  キーボードから整数を入力し、Enterキーを押すごとに改行され てファイルに保存される 実行結果の例 保存されたファイルの中身

ファイルからの読み込み   ファイルからのデータ読み込みには「fgetc」、「fgets」、「fscanf」 がある 今回は fscanf を使用する  書式: fscanf (ファイル位置指定子, “ 書式文字列”, 引数1, 引数2, … ); 例)位置指定子 fp のファイルから整数型の変数x, y にデータ を読み込む fscanf (fp, “ %d %d ” , & x, & y); ※ scanf関数と同様、変数名の前に「&」をつけること

ファイルからデータを読み込んで表示  先ほどのファイルを読み込んで表示 読み込みなので ” r”

ファイルに整数データを書き込む(2)  入力の個数が指定できない場合は以下のようにする ← 変数 x の宣言を忘れないこと ← EOFはデータ、ファイルの 終了を示す

実行結果の例(2)   キーボードから整数を入力し、Enterキーを押すごとに改行され てファイルに保存される 入力を終了するには「Ctrl+Z」→「Enter」と押す 実行結果の例 保存されたファイルの中身

ファイルからデータを読み込んで表示(2)  データ数が分からない場合の読み込みと表示 読み込みなので ” r”

複数データと文字列の入出力    scanf, printf関数と同様、複数の入出力や文字列の入出力もで きる 文字列を扱う場合の書式は「%s」 文字列を扱うための変数は配列とし、「配列名[バイト数]」と宣 言する(日本語の場合は1文字が2バイト)  例)名前の文字列(配列名 name )、番号(整数型、変数名 number)をファイルに書き出し、読み込み fprintf (fp, “ %s %d ” , name, number); fscanf(fp, “ %s %d ” , name, & number); ※変数が配列名のときのみ、scanf、fscanfの引数に「&」が不要

複数データと文字列の入出力(例) 入力例 M 作成されるファイル

第12回のレポート  以下のプログラムを作成し、メールで提出してください (1)先ほどの「氏名と番号」を入力したファイルを読み込んで、 標準入出力に書き出すプログラム (2)関数 y = x 2 のx, y の組を計算し、ファイルに書き出すプ ログラム(x は –3から3まで0.1間隔とする) ※ 余裕があれば出来たファイルをExcelで読み込んでグラフ にしてみよう