情報・知能工学系 山本一公 kyama@tut.jp プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公 kyama@tut.jp.

Slides:



Advertisements
Similar presentations
プログラミング演習 II 2005 年 1 月 19 日(第 9 回) 理学部数学科・木村巌. 前回までの復習 共用体( union type ) 共用体( union type ) 列挙 (enumerated type ) 列挙 (enumerated type ) 構造体、構造体のポインタ、
Advertisements

プログラミング演習Ⅱ 第 11 回 ポインタ(2) 情報・知能工学系 山本一公
プログラミング演習Ⅱ 第 8 回 マクロ・列挙体等 情報・知能工学系 山本一公
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第5回 関数(1) 情報・知能工学系 山本一公
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
応用理工学情報処理 第1回(2015年10月 5日) 月曜日担当 前島展也 Manaba
情報処理演習C2 ファイル操作について (2).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第7回 データの基本型 情報・知能工学系 山本一公
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
第13回 プログラミングⅡ 第13回
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第11回 プロセス間通信4 仮想FTPの実現 担当:青木義満
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
10: ファイル入出力 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
第2回 Microsoft Visual Studio C++ を使ってみよう
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
Cプログラミング演習 第6回 ファイル処理と配列.
プログラミング 2 ファイル処理.
プログラミング論 ファイル入出力
プログラミング入門2 ファイルの入出力 ポインタ 芝浦工業大学情報工学科 青木 義満
Cプログラミング演習.
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
プログラミング演習I 2003年6月25日(第10回) 木村巌.
知能情報工学演習I 第9回( C言語第3回) 課題の回答
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
プログラミング論 ファイル入出力
Cの実行モデル.
プログラミング入門 第12回 情報工学科 篠埜 功.
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
第4回 ファイル入出力方法.
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
プログラミング演習I 2003年7月2日(第11回) 木村巌.
知能情報工学演習I 第7回(後半第1回) 課題の回答
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
モジュール分割.
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
C言語プログラミング・課題 ファイルを読み込んで、その内容を表示するプログラムを作成せよ。
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
コンピュータープログラミング (C言語)(10) 1.ファイル入出力
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
第2章 数値の入力と変数 scanfと変数をやります.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

情報・知能工学系 山本一公 kyama@tut.jp プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公 kyama@tut.jp

今日の内容 教科書 p.289~ ファイルとストリーム テキストとバイナリ 今日は使い方だけ教えます fopen, fclose, fscanf, fprintf 標準入出力 テキストとバイナリ fread, fwrite 今日は使い方だけ教えます 考えるだけの知識はまだないので、 深く考えないこと

ファイル プログラムを実行する! C言語の「ソースファイル」 結果はどこに? 画面に表示させる! 保存する方法は? スクロールすると消えてしまう…… 保存する方法は? 「ファイル」に保存! C言語の「ソースファイル」 ハードディスク上に保存されている コンパイラはファイルを読み出して処理する 保存してある情報は読み出せる!ってこと

ファイルを開こう(1) ファイルを使えるようにするための操作 まずはFILE構造体へのポインタを宣言! ……何それ? 今は「おまじない」だと思ってください /* p.295 List 13-1 ファイルのオープンとクローズ */ #include <stdio.h> int main(void) { FILE *fp; ← おまじない! fpは変数名なので変えられる  “*”を忘れないように!

ファイルを開こう(2) fopen関数でファイルを開く 引数はファイル名とモード “r”で読み込み、“w”で書き込み(p.293参照) ファイルのオープンとクローズ */ #include <stdio.h> int main(void) { FILE *fp; fp = fopen(“abc”, “r”); /* ファイルのオープン */ ↓「abc」という名前のファイルを読み込みモードで開く

ファイルを開こう(3) ファイルのオープンとクローズ */ #include <stdio.h> int main(void) { FILE *fp; fp = fopen(“abc”, “r”); /* ファイルのオープン */ if (fp == NULL) printf(“\aファイルをオープンできません。\n”); else { /* ファイルから読込みなどを行う */ ←オープンに失敗すると、fopenはNULLを返す

ファイルを閉じる 作業が終わったらファイルを閉じる fclose関数でファイルを閉じる 引数はFILE構造体へのポインタ if (fp == NULL) printf(“\aファイルをオープンできません。\n”); else { /* ファイルから読込みなどを行う */ fclose(fp); /* ファイルのクローズ */ } return (0);

入出力してみよう 今までと同じように入出力しよう! fscanf, fprintf 入出力先を指定する ファイル構造体へのポインタを使う! それ以外の書式はscanf, printfと同じ scanf(“%d”, &n); fscanf(fp,“%d”, &n); printf(“n = %d\n”, n); fprintf(fp,“n = %d\n”, n);

ストリーム ストリーム=流れ ファイルへの入出力はデータの流れ ファイルだけじゃなく、他の入出力も含めて、 全てがデータの流れ ファイルストリーム ファイルだけじゃなく、他の入出力も含めて、 全てがデータの流れ 標準ストリーム 標準入力・標準出力・標準エラー出力 stdin, stdout, stderr システムが用意している特殊なファイル構造体へのポインタ scanf(“%d”, &n) = fscanf(stdin,“%d”, &n); printf(“n = %d\n”, n) = fprintf(stdout,“n = %d\n”, n);

バイナリデータの読み書き(1) バイナリデータ テキストデータ データを保存するのには、コンピュータの内部表現をそのまま用いる方が効率が良い ビットの並びで表現されたデータ コンピュータの内部表現 テキストデータ 人間が読めるデータ ASCIIコードなど データを保存するのには、コンピュータの内部表現をそのまま用いる方が効率が良い 教科書 p.307, Fig.13-8

バイナリデータの読み書き(2) ファイルのオープンはバイナリモードですること! 閉じるのは同じ fp = fopen(“abc”, “rb”); fp = fopen(“def”, “wb”); fclose(fp);

バイナリデータの読み書き(3) ファイルからデータを読み込む:fread関数 ファイルにデータを書き出す:fwrite関数 第1引数は読み込んだデータを入れる変数(”&”を付けること!) 第2引数の”sizeof”にデータを入れる変数の型を与える 上の例では”int” 第3引数は配列を覚えるまでは”1”で固定 第2引数×第3引数[byte]のデータを読み込む ファイルにデータを書き出す:fwrite関数 引数の順序・書式はfreadと同じ 第1引数に入っているデータをバイナリ形式でファイルに書き出す int x; fread(&x, sizeof(int), 1, fp); float x; fwrite(&x, sizeof(float), 1, fp);

難しい? 構造体とポインタが絡む話なので、 正しく理解できるようになるのはまだ先 だから、教科書の最後の章にあるのだ! 今は、丸のみで覚えて、とりあえず 使えるようにだけなってください 配列を扱うようになると、 バイナリデータの読み書きが役に立つ!

今週の課題 整数値を3つキーボードから読み込んで、それをテキスト形式でファイルに書き出すプログラムを作成・実行せよ。1行に1つの数字を書き出すこと。書き出すファイル名は”kadai1-1.dat”とせよ。 課題1で作成したファイルから整数値を3つ読み込んで、それをバイナリ形式でファイルに書き出すプログラムを作成・実行せよ。書き出すファイル名は”kadai1-2.dat”とせよ。そして、データを書き出したファイルの内容を、教科書 p.310のList 13-10のプログラムを使って表示・確認せよ。

レポートについて 電子メールで提出 提出先は prog2@slp.cs.tut.ac.jp Subjectを「プログラミング演習2 課題1 学籍番号・氏名 」とすること C言語ソースファイルを添付する メールの本文には何も書かなくて良いです ソースファイルの頭にコメントで以下の情報を入れる 学籍番号・氏名 プログラムの説明(どのように動くのか、工夫した点等) 実行結果(長い場合は一部)を貼る 提出締切は、10月17日(水) 12:00 (1週間後)

授業用Webサイト URL: http://www.slp.cs.tut.ac.jp/~kyama/programming2/ 課題のpdfファイルが置いてあります。 授業で使ったpptファイルを置いていきます。 質問メールは、以下のどちらかのアドレスまで kyama@tut.jp prog2@slp.cs.tut.ac.jp C-515へ直接質問しに来ても構いません