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

Similar documents
ファイル入出力

ファイル入出力

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

Microsoft PowerPoint - prog04.ppt

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

演算増幅器

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

情報処理演習 B8クラス

Microsoft PowerPoint - kougi6.ppt

PowerPoint Presentation

gengo1-12

プログラミング基礎

02: 変数と標準入出力

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

Prog1_12th

計算機プログラミング

gengo1-12

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

02: 変数と標準入出力

gengo1-12

2006年10月5日(木)実施

PowerPoint Presentation

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

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

※ ポイント ※

練習&演習問題

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

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

Microsoft Word - no204.docx

Microsoft Word - no15.docx

Microsoft PowerPoint - kougi8.ppt

V

Microsoft PowerPoint - kougi2.ppt

Microsoft PowerPoint - prog06.ppt

Prog1_15th

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

スライド タイトルなし

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

Microsoft PowerPoint - kougi9.ppt

PowerPoint プレゼンテーション

slide4.pptx

memo

データ構造

Microsoft PowerPoint - kougi11.ppt

Microsoft Word - no103.docx

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

Microsoft PowerPoint pptx

PowerPoint Presentation

データ構造

Microsoft PowerPoint - lec10.ppt

目次

PowerPoint プレゼンテーション

Microsoft PowerPoint - 10Com2.ppt

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

Microsoft PowerPoint - kougi4.ppt

Prog1_10th

プログラミング基礎

Microsoft Word - 06

memo

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

Microsoft PowerPoint - 5Chap15.ppt

Microsoft Word - cpro_m_13.doc

Microsoft PowerPoint - guidance.ppt

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

ポインタ変数

プログラミング演習 土曜日(Q組)

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

PowerPoint プレゼンテーション

Microsoft Word - no202.docx

PowerPoint プレゼンテーション

PowerPoint Presentation

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

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

Microsoft PowerPoint - 11.pptx

プログラミング基礎

memo

Microsoft PowerPoint - OOP.pptx

PowerPoint プレゼンテーション

講習No.9

ディジタル信号処理

PowerPoint プレゼンテーション

ファイルシステム

DVIOUT

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

プログラミング実習I

A/B (2018/10/19) Ver kurino/2018/soft/soft.html A/B

#include<math.h> 数学関係の関数群で sin() cos() tan() などの三角関数や累乗の pow() 平方根を求める sqrt() 対数 log() などがあります #include<string.h> 文字列を扱う関数群 コイツもまた後日に 4. 自作関数 実は 関数は自分

mstrcpy char *mstrcpy(const char *src); mstrcpy malloc (main free ) stdio.h fgets char *fgets(char *s, int size, FILE *stream); s size ( )

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

データ構造

1 C STL(1) C C C libc C C C++ STL(Standard Template Library ) libc libc C++ C STL libc STL iostream Algorithm libc STL string vector l

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

ディジタル信号処理

Microsoft PowerPoint - prog03.ppt

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

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

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

Taro-リストⅠ(公開版).jtd

Transcription:

C 言語講座 ~ ファイル入出力編 ~ ポインタ使います 例 2 練習問題 3

初めに プログラムを組む上での話と今回の演習について

例えばこの画面の場合

背景の動画の描写 ノーツを流れてくるようにする ボタンを押したら違反亭ライン近くのノーツは消えるようにする処理 曲の難易度ごとに判定を追加とか残りの処理 完成

演習 1 クリア 演習 2 クリア 過程は各自で考えてください 演習 3 クリア

ファイルの出入力でこれからやること ファイルへの書き込み ( 出力 ) 今日はメモ帳への書き込みを行ってもらいます ファイルからの読み込み ( 入力 ) メモ帳を読みとって画面に出力してもらいます

C 言語でファイルを扱う時の ルール 1. ファイルのポインタを準備します!!! 初めにファイルポインタを定義します 2. ファイルを開きます!!! ファイルのオープンです 関数 fopen を用いて初期化です 作業の種類によって初期化するモードが変わります ( 後述 ) < 作業 > 3. ファイルを閉じます!!! ファイルのクローズです 関数 fclose を用いてファイルポインタの解放です

// ファイルポインタの定義 FILE *fp; 具体的に // オープンファイルポインタ =fopen( ファイル名, モード ); fp = fopen( conmai.txt, w ); // 準備完了 // クローズ fclose( ファイルポインタ ); fclose(fp);

テキストファイルのオープンモード 例 ) fopen( ファイル名, モード ); fopen( conmai.txt, w ); コレコレ r: テキストファイルの読み込みモード w: テキストファイルの書き込みモード ( なかったら新規作成 ) a: テキストファイルの追加モード w+: 更新用にテキストファイルをオープン ( 新規作成 ) r+: 更新用にテキストファイルをオープン ( ファイルを開く ) a: 更新の為 追記用にテキストファイルをオープン

関数達の簡単な紹介 1 fprintf: ファイルに書式付で文字列を書き込む 使い方 :fprintf( ファイルポインタ printf と同じ ); 例 : fprintf(fp, %d+%d=%d,num1,num2,num3); fscanf: ファイルから文字列を読み込んで更に指定された形式に変換する 使い方 :fscanf( ファイルポインタ scanf と同じ ); 例 : fscanf(fp, %d,&num);

ファイルを開いて書き込んでみよう!

テキストファイルの準備 デスクトップにある コンピューター あたりから ローカルディスクC:>>useres>> ユーザー名 >>desktopを開き すると と変わるのでこのパスをコピーしておいてください

include<stdio.h> int main(void){ FILE*fp; fp=fopen( C: Users ユーザー名 Desktop testk3.txt, w ); if(fp==null ){ // さっきのファイルの場所に を に変えたもの + ファイル名 printf(" ファイルオープン失敗 "); return 1; // ファイルが開けなかったとき NULL が返ってくる fprintf(fp,"c 言語講座なう n"); fclose(fp); return 0; // 書き込み

実行後 デスクトップに作成されたテキストを 開くと

関数達の簡単な紹介 2 fgets: ファイルから 1 行読みだす 使い方 :fgets( アドレス 最大文字数 ファイルポインタ ); 例 ; char str[10]; fgets( str, 10, fp ); fputs: ファイルに 1 行書き込む 使い方 :fputs( 文字列, ファイルポインタ );

fgetc: 先頭の一文字を得る 実行後はファイルポインタが次の一文字を指す ] 使い方 :fgetc( ファイルポインタ ): fputc : 一文字書き込む 実行後はファイルポインタがひとつ先を指す 使い方 :fputc(char 型の文字 ファイルポインタ );

次は 今作成したテキストファイルを 読み込んでみましょう

#include<stdio.h> int main(void){ FILE *rfp; char c; rfp=fopen( ( パス )~ testk3.txt","r"); if(rfp==null){ printf(" ファイルオープン失敗 "); return 1; while( (c= fgetc(rfp) )!= EOF ){ printf("%c",c); fclose(rfp); return 0; // 最後の文字まで 1 文字ごとに見ていく

( さりげなく文章を変えて ) 実行すると

演習 1 今作成したtestK3.txtを読み込み newtestk3.txtという新しいテキストファイルに書き写してください 演習のたびに次のページにヒントがあります

ヒント 例題で出力先がコンソールだったのを テキストファイルに変えると

演習 2 Ken 183 n Gakut 180 n Miyabi 185 n Masaharu 181 n Hyde 136 n 上の文をログラムを通して testk3.txt に上書きしてください (w モードで開けば勝手に上書きされます ) Q.testK3.txt を読み込み それぞれの名前と身長の出力 最後にその平均をコンソールに出力してください

ヒント 数字だけ読みとるには fscanf( ファイルホ インタ, %d,&number); 一回使うことでスペース または改行まで読み込みます Char 型の時 fscanf() 内で & は不要

演習 3( おそらく省略 ) testk3.txt を読み込み newtestk3.txt へ背の高い順に並び変えて出力してください こういう風に Miyabi 185 Ken183 Masaharu181 Gakut180 Hyde136

ヒント構造体の持つパラメータ例 名前を保存しておく char 型の配列 背の高さを保存しておく int 型の変数 出力するときのヒント Printf( %s %d, A[n].name,A[n].tall ); プログラム組み立て例 : まずはテキストを勝手に書き換えて 2 人分用意してただ順番を入れ替えて出力するものを作ってみる 次に背の高さだけを入れ替えて出力できるものを作ってみる 背の高さで比較して大きい方を上にして出力できるようにする 多人数 ver を作ってみる

答え

演習 1 答案例 #include<stdio.h> // 左はファイルの開くだけ int main(void){ FILE *rfp1,*wfp2; char c; rfp1=fopen( ( パス ) testk3.txt","r"); wfp2=fopen( ~ パス ~ K3.txt","w"); if(rfp1==null wfp2==null){ printf(" ファイルオープン失敗 "); return 1; //rfp1 を見て rfp2 へ出力 while((c=fgetc(rfp1))!=eof){ fprintf(wfp2,"%c",c); fclose(rfp1); fclose(wfp2); return 0;

演習 2 答案例 #include<stdio.h> // ファイル準備 int main(void){ FILE *rfp1; char s[10]; int sum=0,i=0,count=0; rfp1=fopen( ~ パス ~ testk3.txt","r"); if(rfp1==null){ printf(" ファイルオープン失敗 "); return 1; while( count<5){ fscanf(rfp1,"%s",s); fscanf(rfp1,"%d",&i); sum =sum+i; count++; printf( %s,s); printf("%d n",i); printf("%d n",sum/(count+1)); fclose(rfp1); return 0;

include<stdio.h> struct sourt { // 構造体の宣言 char name[20]; int se; ; 演習 3 答案例 1 int main(void){ FILE *rfp,*wfp; rfp=fopen( 各自のパス testk3.txt","r"); int n,m,count=0; struct sourt rank[5],temp; if(rfp==null){ printf(" ファイルオープン失敗 "); return 1;

// 入力 for(count=0;count<5;count++){ fscanf(rfp,"%s",rank[count].name); fscanf(rfp,"%d",&rank[count].se); fclose(rfp); // 並び替え for(n=0;n<5;n++){// 保存場 for(m=n;m<5;m++){// 比較 演習 3 答案例 2 if(rank[n].se < rank[m].se){// もし保存場よりも比較が大きければ temp=rank[m]; rank[m]=rank[n]; rank[n]=temp;

演習 3 答案例 3 wfp=fopen( 各自のパス K3.txt","w"); if(wfp==null){ printf(" ファイルオープン失敗 "); return 1; // 出力 for(n=0;n<5;n++){ fprintf(wfp,"%s %d n",rank[n].name,rank[n].se); fclose(wfp); return 0;