PowerPoint Presentation

Similar documents
PowerPoint Presentation

ファイル入出力

ファイル入出力

gengo1-12

情報処理演習 B8クラス

Microsoft PowerPoint - 第3回目.ppt [互換モード]

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

gengo1-12

gengo1-12

プログラミング基礎

演算増幅器

Microsoft Word - Cプログラミング演習(9)

Taro-ファイル処理(公開版).jtd

C言語講座 ~ファイル入出力編~

Microsoft PowerPoint - prog04.ppt

PowerPoint Presentation

Microsoft Word - Cプログラミング演習(10)

計算機プログラミング

Prog1_12th

Microsoft PowerPoint - 14th.ppt [互換モード]

2006年10月5日(木)実施

Microsoft Word - no15.docx

memo

1. ファイルにアクセスするには ファイルにアクセスするには 1. ファイルを開く 2. アクセスする 3. ファイルを閉じるという手順を踏まなければなりません 1.1. ファイルを読み込む まずはファイルの内容を画面に表示させるプログラムを作りましょう 開始 FILE *fp char fname

プログラミング基礎

PowerPoint プレゼンテーション

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

Prog1_15th

練習&演習問題

Microsoft PowerPoint - kougi2.ppt

Microsoft Word - no204.docx

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - kougi4.ppt

Microsoft Word - 3new.doc

Microsoft PowerPoint - kougi6.ppt

※ ポイント ※

Microsoft PowerPoint - prog06.ppt

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

memo

02: 変数と標準入出力

02: 変数と標準入出力

Microsoft Word - Cプログラミング演習(12)

ゲームエンジンの構成要素

ポインタ変数

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

Microsoft PowerPoint - 説明2_演算と型(C_guide2)【2015新教材対応確認済み】.pptx

Cプログラミング1(再) 第2回

Microsoft PowerPoint - guidance.ppt

PowerPoint Presentation

Microsoft PowerPoint - 説柔5_間勊+C_guide5ï¼›2015ã•’2015æŒ°æŁŽæš’å¯¾å¿œç¢ºèª“æ¸‹ã†¿ã•‚.pptx

Prog1_10th

Microsoft Word - no12.doc

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint - kougi9.ppt

訋箊æ©�ã…Šã…�ㇰㅩã…�ㅳㇰ - 第13åłž ã…Łã‡¡ã‡¤ã…«å⁄¦ç’ƒ

Microsoft PowerPoint - program.ppt [互換モード]

スライド タイトルなし

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

memo

PowerPoint プレゼンテーション

memo

Microsoft PowerPoint - kougi8.ppt

Microsoft PowerPoint - 13.ppt [互換モード]

Microsoft PowerPoint - 11.pptx

PowerPoint プレゼンテーション

Microsoft Word - no202.docx

目次

講習No.9

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

今までの復習 プログラムで最低限必要なもの 入力 ( キーボードから ファイルから ) 出力 ( 画面へ ファイルへ ) 条件分岐 : 条件の成立 不成立により 異なる動作をする 繰り返し : 一定の回数の繰返し 条件成立の間の繰返し 関数の定義 関数の呼び出し C ではそれ以外に ポインタ データ

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

プログラミング演習3 - Cプログラミング -

Microsoft Word - no103.docx

Microsoft Word - no11.docx

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

超初心者用

Microsoft PowerPoint - kougi11.ppt

V

演習課題No12

Microsoft Word - no13.docx

スライド 1

演算増幅器

画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう

データ構造

cp-7. 配列

Webデザイン論

Microsoft PowerPoint pptx

文字列 2 前回の授業ではコンピュータ内部での文字の取り扱い 文字型の変数 文字型変数への代入方法などを学習した 今回は 前回に引き続き 文字処理を学習する 内容は 標準入出力 ( キーボード ディスプレイ ) での文字処理 文字のファイル処理 文字を取り扱うライブラリ関数である 標準入出力 Lin

データ構造

プログラミング演習3 - Cプログラミング -

プログラミング実習I

PowerPoint Presentation

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

Microsoft PowerPoint - 12.ppt [互換モード]

プログラミング実習I

プログラミング基礎

memo

スライド 1

Transcription:

ファイルの入出力 芝浦工業大学情報工学科 青木義満 今回の講義内容 ファイル入出力 ファイルからのデータ読込み ファイルと配列 2 1

ファイルへのデータ書き込み ( 復習 ) ソースファイル名 :fileio1.c データをファイルに書き込み #include <stdio.h> int main(void) { ファイルポインタ宣言 int student_id = 100; char name[ ]= "morishima"; ファイルに書き込むデータ double tensu = 95.5; 100 morishima 95.5 fp = fopen("test.txt","w"); fprintf( fp, "%d n", student_id ); fprintf( fp, "%s n", name ); fprintf( fp, "%f n", tensu ); test.txt という名前でファイルをオープン ( 書き込み用 ) fprintf( fp, "%d %s %f n", student_id, name, tensu ); fprintf( fp, "%d t%s t%f n", student_id, name, tensu ); データをファイルに書き込み fclose(fp); ファイルを閉じる return(0); 3 ファイルからのデータの読込みの必要性 ファイルに格納されているデータを, プログラム中に読み込んで処理 ファイル ~ 成績表リスト 1 aoki 80.5 100 morishima 95.5 50 tokunaga 70.4 プログラム ~xxx.c int student_id[number]; char name[number][256]; double score[number]; 4 2

データの作成 ( 野球選手成績リスト ) ソースファイル名 :player1.c チーム名, 選手名, ホームラン数をファイルに書き込み #include <stdio.h> #define NUM 100 /* 最大 100 人までの選手データを扱う */ int main(void) { char team[num][256]; char name[num][256]; int hr[num]; int i; fp = fopen("player.txt","w"); /* キーボードから選手データを読込み */ for(i=0; i < 5; i++){ printf("input Players' Data n"); printf("team : "); scanf("%s", team[i]); printf("name : "); scanf("%s", name[i]); printf("homerun : "); scanf("%d", &hr[i]); for(i=0; i < 5; i++){ /* 読み込んだデータを画面表示 */ printf( "%s %s %d n", team[i], name[i], hr[i]); /* 読み込んだデータをファイルへ書き込み */ fprintf( fp, "%s %s %d n", team[i], name[i], hr[i]); fclose(fp); return(0); player.txt G Matsui 50 L Matsui 33 D Fukudome 20 5 ファイルからのデータの読み込み ファイルからデータを読み込む際の手順 ファイルを開く ( 読込みモードで ) 変数へのデータの読込み fscanf 関数等を使用 ファイルを閉じる 6 3

ファイルを開く ~ fopen 関数 データを読み込む対象の ファイル名 を指定 読み込みモードを指定 (2 つ目の引数に r を指定 ) 読み込みモードでファイルを開く操作 FILE *fp ( ファイルポインタ ) fp = fopen( file.txt, r ); ファイルを指定 file.txt ( ファイル ) ファイル名 読込みモード fp を介して, ファイルにアクセスが可能! 7 ファイルを開く際のモードの種類 ( テキストファイル ) モード r w a r+ w+ a+ 意味 読込み用にファイルを開く ファイルが存在しない場合や見つからない場合は失敗する 書き込み用にファイルを作成 ファイルが存在する場合はそのファイルの内容は破棄する 追加書き込みのために既存ファイルを開く ファイルが存在しない場合には作成する 読み書き用にファイルを開く ファイルは存在していなければならない 読み書き用にファイルを作成 ファイルが存在する場合には, そのファイルの内容は破棄する 読込みと追加の両方のモードでファイルを開く ファイルが存在しない場合は作成する 8 4

ファイルからのデータの読込み ~ fscanf 関数 scanf 関数 ( キーボードからのデータ入力 ) fscanf 関数 (file からのデータ入力 ) fscanf 関数の書式 scanf 関数 scanf( %d, &x); fscanf 関数 fscanf( fp, %d, &x ); データを読み込む対象ののファイル ( ポインタ ) fscanf fp = fopen( file.txt, r ); file.txt 100 プログラム中の変数 int x 9 fscanf 関数の使用例 実数データの読み込み ファイル :fscanf( fp, %lf, &x ); double x 文字列データの読込み 文字配列 1 つ : char name[256] fscanf( fp, %s, str ); 複数の文字配列 : char name[5][256] fscanf( fp, %s, str[i] ); 1 行に並んでいる複数の型のデータを読み込み fscanf( fp, %d %s %f, &student_id, name, &tensu ); file 1 aoki 80.5 char name[ 256] ; int student_id; double tensu; 10 5

ファイルを閉じる 使い終わったら, 後片付け ファイルを閉じる ファイルを開く時に指定したファイルポインタを指定 fclose(fp); 11 ファイルからのデータの読込み例題 ソースファイル名 :player2.c データをファイルから読み込み, 変数に格納, 表示 #include <stdio.h> #define NUM 100 int main(void) { char team[num][256]; char name[num][256]; int hr[num]; int i; for(i=0; i < 5; i++){ /* 読み込んだデータを画面表示 */ printf( "%s t%s t%d n", team[i], name[i], hr[i]); fclose(fp); return(0); fp = fopen("player.txt","r"); 読込みモードでファイルをオープン /* ファイルから選手データを読込み */ for(i=0; i < 5; i++){ fscanf(fp, "%s %s %d", team[i], name[i], &hr[i]); 12 6

入出力ファイル名の指定 これまでのプログラム 入出力ファイル名をプログラム中で指定 fp = fopen("player.txt","r"); キーボードからファイル名を指定できれば便利! ファイル名の指定 char filename[256]; printf( input filename : ); scanf( %s, filename ); fp = fopen( filename, r ); 13 入出力ファイル名の指定例題 ソースファイル名 :filename.c ファイル名を指定して開く #include <stdio.h> int main(void) { char filename[256]; printf( "Input file name : " ); scanf( "%s", filename ); fp = fopen(filename, "r"); ファイル名格納用変数 キーボードから入力した文字列を filename に格納 Filename でファイル名を指定して開く printf(" ファイル名は %s です ", filename); /* ファイルからのデータ読込み */ /* データ処理 */ return(0); 指定したファイルが存在しなかったら? 14 7

ファイルが開けるかどうかのチェック fopen 関数の仕様 fp = fopen(filename, "r"); ファイル filename が存在し, 開ける場合 fpにそのファイルを指定するファイルポインタを格納 (fpには, そのファイルを指定可能にするための何らかの値が入る ) ファイル filename が存在しない, 開けない場合 fpにはnull( 空 ) が代入される ファイルが開けるかどうかの判定 fp = fopen(filename, r ) == NULL == それ以外の値 if 文を使って判定 15 ファイルが開けるかどうかのチェック例題 ソースファイル名 : filecheck.c 指定したファイルが開けるかどうかを判定 #include <stdio.h> #include <stdlib.h> ヘッダーを追加 (exit 関数使用のため ) int main(void) { char filename[256]; printf( "Input file name : " ); scanf( "%s", filename ); ファイルが開けるかどうかの判定 if( (fp = fopen(filename, "r") ) == NULL ){ printf(" 指定したファイル %sは開けません n", filename); printf(" プログラムを終了します n"); exit(1); プログラムを終了 else{ printf( "file open 成功! n" ); printf( " ファイル名は %sです", filename ); /* ファイルからのデータ読込み, データ処理 */ fp=null, ファイルが開けなかった場合 fp!= NULL : ファイルが開けた場合 return(0); 16 8

演習課題 以下のようなサッカー選手のデータファイルをエディタ (emacs) で作成せよ そのファイルから, 選手名, アシスト数, ゴール数を読み込み, アシスト王, 得点王,MVP( アシスト + 得点が MAX) の選手を判定し, 画面に結果を表示するプログラムを作成せよ (kadai8.c) 名前アシストゴール 選手数は各自で決めて良い最大値を求める関数を自分で設計し 使用すること Takahara 7 20 Nakayama 5 13 Magron 2 8 Kazu 6 10 ファイル :player.txt 今日は 1 問のみ. 前回までの課題チェックを今日中に終えること!! 17 重要 中間テストについて 日時 :11 月 24 日 ( 月 )13:00~14:00 テスト終了後に ホームルーム実施 場所 :3401 教室 試験範囲 最初 ~ 第 6 回 ( 関数 ) まで 試験形式 筆記 すべて持ち込み不可 18 9

前回演習問題, 課題についての注意事項 演算の優先順位について radian = acos(naiseki/p1*p2); naiseki = x1*x2 + y1*y2; p1 = sqrt(x1*x1+y1*y1); p2 = sqrt(x2*x2+y2*y2); () を使って計算の優先順位を決める radian = acos(naiseki/(p1*p2)); naiseki p 1 * p 2 naiseki * p p 1 2 配列の要素数について int num; char name[num][128]; printf( 人数を入力してください : ); scanf( %d, &num); コンパイルエラー 重要配列の要素数に変数は使用できない 定数のみ使用可能 ( 直接数字を書くか,#defineで定数を定義するか) 必要なサイズの配列を動的に確保することも可能 alloc, malloc 関数 19 10