プログラミングB 第3回 担当 鈴木 伸夫 今日のキーワード ファイル入出力

プログラミングB 第3回 担当 鈴木 伸夫
今日のキーワード
ファイル入出力。FILE型、fopen(), fclose(), fscanf(), fprintf()など
ファイル入出力
ファイルを使用する宣言fopen()
File *file = fopen("ファイル名", "モード");
モードは読み取りならr、書き込みならw、追加ならaである。
ファイルから一行読む
fscanf(FILEポインタ, "型指定子", 変数のポインタ・・・);
ファイルに一行書き込む
fprintf(FILEポインタ,"型指定子と文字列", 変数・・・);
ファイルを使用するのをやめる
fclose(Fileポインタ)
File *file;
/* FILE型ポインタの宣言 */
file = fopen("myFile", "r"); /* myFileというファイルを読み込みモードでオープン */
fcanf(file,"%d", &a); /* int型変数aにファイルから読み込んだ値を代入する */
fclose(file) /* myFileはもう使わないのでクローズ */
file = fopen("outFile", "w"); /* outFileというファイルを書き込みモードでオープン */
fprintf(file, "%d", a); /* aの値をoutFileに書き込み */
fclose(file) /* outFile はもう使わないのでクローズ */
FILEポインタの部分にstdinと書くとキーボード、stdout,stderrと書くと画面を意味する。(実は標準出力
と標準エラー出力は別になっている。これにより、出力は画面に、エラーはファイルに、などと出力を振り
分けることができる)。
練習問題:
問題3-1:問題2-2の「じゃんけんプログラム」を以下のように改良したプログラムを作成せよ。
・ゲームを起動したとき、「jankendata.txt」から今までの対戦成績を読み込み、「○回勝負しました あ
なた○勝 わたし○勝 」と表示する。
・プレイヤーは「ぐー」なら0を「ちょき」なら1を「ぱー」なら2を入力する.終了したいときは3を入
力する。
・コンピュータが勝ちなら「あなたの負け」,プレイヤーが勝ちなら「あなたの勝ち」,引き分けなら「引
き分け」と表示して今までの対戦成績を「○回勝負しました あなた○勝 わたし○勝 」と表示してプレ
イヤーの入力に戻る。
・終了するときには「jankendata.txt」に対戦成績を記録する。
jankendata.txtには「対戦回数、プレイヤーの勝数、コンピューターの勝数」を記録する。
例)対戦回数100回、プレイヤーの勝数35回、コンピューターの勝数30回の場合
jankendata.txtには
100 35 30
と記録されている。
実行例)
0回勝負しました あなた0勝 わたし0勝
あなたの手は? ぐー(0) ちょき(1) ぱー(2) 終了(3)> 2
(注:プレイヤーがパーを入力)
あなたの勝ち
1回勝負しました あなた1勝 わたし0勝
Input gu(0) choki(1) pa(2) > 3
(注:プレイヤーはやめたくなったので3を入力)
今日のチェック問題(プログラミングB第3回)
学籍番号
名前 1. fopen(), fprintf()を使って、int変数aの値をファイル"myfile"に出力するにはどう記述するか。
2. 今日の課題はどこまで進んだか? また、この授業の感想、期待することなどを自由に述べよ。