※ ポイント ※

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

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

演算増幅器

PowerPoint Presentation

ファイル入出力

プログラミング基礎

ファイル入出力

gengo1-12

gengo1-12

Microsoft PowerPoint - kougi6.ppt

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

2006年10月5日(木)実施

情報処理演習 B8クラス

PowerPoint Presentation

gengo1-12

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

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

Prog1_12th

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog04.ppt

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

Microsoft Word - no204.docx

Microsoft PowerPoint - prog06.ppt

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

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

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

Microsoft PowerPoint - OOP.pptx

ポインタ変数

Microsoft PowerPoint - kougi4.ppt

計算機プログラミング

PowerPoint プレゼンテーション

データ構造

Microsoft PowerPoint - guidance.ppt

PowerPoint プレゼンテーション

02: 変数と標準入出力

ポインタ変数

PowerPoint Presentation

memo

ポインタ変数

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

02: 変数と標準入出力

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

Microsoft Word - no103.docx

Microsoft PowerPoint - kougi2.ppt

プログラミング実習I

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

Microsoft Word - no15.docx

基礎プログラミング2015

推奨 web ブラウザについて スマートフォンやタブレットには様々な web ブラウザがあります Android 端末には 標準ブラウザ ios 端末には Safari どちらでも使用できる Y ブラウザ FireFox Google Chrome などの web ブラウザがあります ビット web

練習&演習問題

PowerPoint Presentation

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

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

Microsoft PowerPoint - kougi8.ppt

cp-7. 配列

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Microsoft Word - java a.doc

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

全体ロードマップ インターネット電話 音の符号化 ( 信号処理 ) 今日 音の録音 再生 ネットワーク ( ソケット ) プログラミング ファイル入出力 インターネットの基礎 C プログラミング基礎

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

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

Microsoft PowerPoint pptx

ガイダンス

C 資料 電脳梁山泊烏賊塾 ファイルの入出力 C++ のバイナリファイル入出力 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する

スクールCOBOL2002

基本的な利用法

図 2 エクスポートによるシェープファイルの新規保存 新規保存するファイルは, より分かりやすい名前をつけて適切なフォルダ (shape フォル ダにまとめておくのがよい ) 上に保存しておく 2 / 10

Microsoft PowerPoint - 講義10改.pptx

memo

PowerPoint プレゼンテーション

スライド 1

slide4.pptx

E01 前年度一括申告情報を取り込むには 前年度一括申告情報 (CSV Excel ファイル ) 取込 ボタンをクリックして前年度一括申告データを読込ます CSV データは 各都道府県医師会に日本医師会より提供されています 項目があっていれば独自に用意したファイルを読み取ることも可能です ( 注 )

格子点データの解析 1 月平均全球客観解析データの解析 客観解析データや衛星観測データのような格子点データは バイナリ形式のデータファイルに記録されていることが多いです バイナリ形式のデータファイルは テキスト形式の場合とは異なり 直接中身を見ることができません プログラムを書いてデータを読み出して

テキストファイルの入出力1

Microsoft PowerPoint - kougi7.ppt

講習No.8

データ構造

memo

団体専用ページログイン認証について ログインする 1 メールアドレス パスワードを登録し ログインする ボタンを押してお進みください メールアドレスは 団体受験利用申請時に登録されたメールアドレスとなります その際 協会より発行されたパスワードをご利用ください 団体 ID パスワードをお忘れの方 2

情報処理概論(第二日目)

Microsoft PowerPoint - prog05.ppt

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

Microsoft PowerPoint - lec10.ppt

1. はじめに 1. はじめに 1-1. KaPPA-Average とは KaPPA-Average は KaPPA-View( でマイクロアレイデータを解析する際に便利なデータ変換ソフトウェアです 一般のマイクロアレイでは 一つのプロー

Microsoft PowerPoint - prog03.ppt

講習No.1

Microsoft Word - 3new.doc

Microsoft PowerPoint - 11.pptx

Word2013基礎 基本操作

26 editor.putint(pref_count_key, executecount); 27 // 変更した Preference を確定させる 28 editor.commit(); 29 } (c) 実行の様子実装して実行した様子を図 1 と図 2 に示す. 一度実行するごとに, カウン

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

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

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

Taro-time to spare.jtd

Microsoft Word - Word1.doc

Microsoft PowerPoint - prog03.ppt

GEC-Java

ポインタ変数

Transcription:

4S-RO ロボティクス実験 参考資料 ファイル入出力 : ファイルの読み込み 1 周目に計測した生体情報データを読み込み プログラムにより信号処理を行うが その際にファイルの 入出力が必要となる 実験前半ですでに学習しているが必要に応じて本資料を参考にすること 以下のようにすると指定したファイルを読み込むことができる ( 詳細は後から記述 ) int i; double --------; char fname[100]; // fname はファイル名のために宣言する. // これで 100 文字までのファイル名を読める FILE *data_in; // 変数と同じく最初に宣言.printf などの予約語と同じにしない 同じ名前 data_in=fopen("test.dat","r") // プログラム本体 fclose(data_in); ファイルを開くときの決まりごと rは read 読み込みモード, つまりファイルからデータを読み込むモードとしてアクセスする. これをwにすると write つまりファイルを作成して書き込むからモードとなる 今の場合は同じフォルダ内にある test.dat を読み込みなさい, ということ.Char 型変数 fname[100] に scanf でファイル名を入れて fopen("sin.dat","r") を fopen(fname,"r") とすることで任意のファイル名をオープンできる ファイルポインタとは FILE *data_in; ファイルに関する操作をするときは FILE 型で定義されるファイルポインタを宣言する. 慣れるまでは単純に ファイルを開いたり綴じたりを設定する変数 程度の認識でよい. 読み込み用のファイルを扱うファイルポインタに out とか write とか書き込みをイメージさせる単語は混乱してしまうので使わない. ファイルポインタへのファイルアクセスの指示 :fopen data_in=fopen("test.dat","r") これによりファイルポインタ data_out( アスタリスクは不要 ) には test.dat というファイルを 読み込 み =read モードで 用意しなさいという設定が行われる. モードは 書き込み w 読み込み r 追加

書き込み a がある.w で書きこむときにはは追加ではないのでおなじファイル名を指定すると前のファ イルは消されて上書きされるので注意が必要である. また, 指定がない場合は実行プログラムとおなじフォルダのファイルを読むので別のフォルダにファイルが ある場合はエラーとなる. ファイルを開いたら閉じる fclose(data_in) fclose(test.dat) 使ったら片づける, 開けたら閉める. ファイルもオープンしたらクローズする. ファイルは fopen の段階でアクセス可能な状態になっている. そのままの状態にしておいてプログラムを閉じてしまうとファイルは不安定な状態で待機することになるのでとても危険である. ゆえに, プログラムの最後あるいは用が済んだ段階で必ずクローズすること.( ) の中には閉じたいファイルを操作しているファイルポインタ名を入れる. ファイル名ではない. ただし, 読み込みファイルは 1 指定したファイルが同じフォルダ内に存在すること 2 指定したファイルが C で扱えるデータであること. グラフなどがあるエクセルデータは読めないという条件を忘れないこと. では, 書き込みにたいして何が異なるのかというと, fscanf 関数プログラム中で実際にファイル内のデータを読み込む fscanf(data_in, %d,&a); 内の書式は実際のデータ列および型と一致させる. A 1 B 1 0.1 C 1, a 10 10 0.3 10, b 2 2 1.5 2, c 3 3 2.0 3, d 5 5 1.5 5, e この例では, 読み込むファイルの中身がそれぞれ A: 1 列データで, 型は int B: 2 列データの タブ区切り, 変数は int と float(double). C: 2 列データの カンマ区切り で, 変数は int と char 型. のようにファイルによって異なる. したがって,

ファイルを読み込む場合は, 読み込むべきファイルの形式を一度確認する必要がある これらの例では, 例えば while 文を利用してデータを配列に入れていくとすると A 一列の場合 C データがカンマ区切りの場合,char 型の場合 fscanf(data_in, %d,&n[i]); fscanf(data_in, %d,%c,&n[i],&c[i]); B 二列でデータがタブ区切りの場合の場合 カンマ区切りは fscanf にカンマを入れればよい fscanf(data_in, %d\t%f,&n[i],&x[i]); char 型は読み取りが %c になる.2 バイト文字は %c%c で一文字 元データが改行してあっても,fscanf に改行記号 n は不要 カンマ区切りは fscanf にカンマを入れればよい 実際の読み取り ファイルでデータを読むときはファイルが何行あるか分からない事が普通である. そこで, while を使って EOF を検出するまでデータを読む ようにするのが一般的である. ここでいう EOF は End Of File の頭文字でこの記号があると ここでファ イルはおわりです という意味である. なお, エクセルで自分で打ち込んだデータは最後に EOF を打ち込んでいないので読み込むと空のセル も読み続けるてしまうので注意すること. 以下のように while の条件部分で読み取って, それが EOF じゃなければという繰り返しにする. 時間と電圧値データのタブ区切り 2 列データを配列に読み取る 場合は以下のようになる. i=0; x_sum=0.0; End of File の略 while(fscanf(data_in,"%lf\t%lf",&t[i],&x[i])!=eof) { この時点で t,x にデータは格納される x_sum+=x[i];// 読み込んだデータをすぐに x_sum に足す i ++; fclose(data_in);// この後読み込まないのですぐにクローズしている data_number=i; x_ave=s_sum/(double)data_number; この例では読み込みと同時に合計値も算出している. これはパターンとして覚えてしまったも良い. 配列が 必要かどうかはケースバイケースとなる. 配列を使う場合はデータ個数がいくらか分からないので多めに用 意しておくか動的に確保する.

ファイル入出力 : ファイルの書き込み int i; double x[50]; char fname[100]; // fname はファイル名のために宣言する FILE *data_out; 同じ名前 data_out=fopen("sin.dat","w") 書き込みは w. 書き込みモードとしてアクセスする. ファイル名に日本語は使えるが, 半角英数字 + 拡張子 を使う. 日本語フォルダ / ファイル名, 全角スペースは危険. すでにあるファイルと同じ場合は上書きされる. 自分のフォルダ内で実行し, システムファイルや大事なデータと同じ名前にしない! for (i=0;i<50;i++) { x[i]=(double)i; fprintf は printf の書式に [ どのファイルポインタに対して?] が追加されるだけ 今の場合はファイルポインタ data_out つまりはファイル名 sin.dat に書き込め と言う事 printf( "%ld\t%lf\n",i,x[i]); fclose(data_out); こちらもオープンしたファイルは必ず閉じて終了 ( 重要!) 実際の出力部分は,printf でディスプレイに出力していたことを fprintf にして出力先をファイルにするだ けである.(fprintf では画面に出てこないので確認用の printf と併用することを推奨 ) ファイルへデータを書きこむ部分は, fprintf(data_out," あいうえお \n"); fprintf(sin.dat,"%ld\t%lf\n",i,x[i]); ダメ fopen でファイル名を指定するとき以外は, プログラムにて直接ファイル名を指定する場面はない. 必ずファイルポインタを通して, そのファイルポインタに指定されているファイルをあつかう.

複数のファイルを扱う場合 FILE *V_out, *I_out; V_out=fopen("t-volt.xls","w") I_out=fopen("t-current.xls","w") for(i=0;i<10;i++){ fprintf(v_out, %lf\t%lf,t[i],v[i]); fprintf(i_out, %lf\t%lf,t[i],i[i]); fclose(v_out); // どちらもクローズすること fclose(i_out); // 実はすべてを一気にクローズする fcloseall もある