第2回 入出力プログラミング

コマンドライン引数

数値パラメータや文字列の変更が予定されているプログラムについては、数値や文字列を変更してその都度コンパイルするのではなく、プログラム実行時に引数を与えるべきである。
以下のプログラムを入力し、コンパイルして、実行せよ。 なお、実行時には以下のように引数をつけて実行すること。
Z:\compmech\ex2> argtest hogehoge
また、以下のように引数の個数が1ではない場合は、エラーが出ることを確認せよ。
Z:\compmech\ex2> argtest
Z:\compmech\ex2> argtest hogehoge fugafuga

補足

以上の引数の個数に関するエラーは、プログラム中の以下の箇所によって処理されたものであることがわかると思います。
if (argc != 2) {	// コマンドライン引数が1個ではない場合はエラーとする
argc は、コマンドラインに文字列配列がいくつ与えられたのかを表す値が格納されます。 実行時引数をまったくつけなかった場合、argc には 1 が入ります。 今回のプログラムは、argc が 2 の場合に動作するよう想定されたものになっています。

数値をコマンドライン引数とする場合

コマンドライン引数は文字列としてmain関数に渡されるため、この値を数値として利用するためには、文字列を数値に変換する関数 atoi および atof を利用する必要がある。 atoi 関数 および atof 関数については検索して使い方を調べること。ヘッダファイルの定義が必要。

おまけ

例えば、コンパイル作業自体もコマンドライン引数を利用したプログラムの一例であるといえる。
Z:\compmech\ex2> bcc32 hogehoge.cpp

ファイル入出力

何らかの処理を行うプログラムは、その演算結果をファイルに保存して記録をのこしたり、他のプログラム(自作のものや、Excelのような表計算やグラフ化プログラムなど)に渡す必要がある。従って、殆どすべてのプログラムで何らかのファイル入出力が必要となる。ここでは、もっとも基本的なプログラムである、ファイル入出力のプログラムを作成することを通して、C言語によるプログラミングの復習を行う。

C言語によるプログラミング上の注意

関数を書く時の常識 メイン関数を書く上での常識

プログラム例

注意

以下のファイル名を用いると、コマンドは次のようになる。
Z:\compmech\ex2> filetest inputdata.txt outputdata.csv

入力ファイル例 (inputdata.txt)

147 0.369
258 0.147
369 0.258

ファイル出力結果の例 (outputdata.csv)

147, 0.369, 54.243
258, 0.147, 37.926
369, 0.258, 95.202

画面出力結果

147 x 0.369 = 54.243
258 x 0.147 = 37.926
369 x 0.258 = 95.202

課題 (提出〆切:金曜日22時)

  1. 上のプログラムの間違いを修正し、適当な入力ファイルを用いて実行させよ。修正を加えたプログラムを提出のこと。ファイル名は 2_1.cpp とする。
  2. a_mat.csv には7行8列の行列 A を表すデータ列が格納されており、 b_mat.csv には8行9列の行列 B を表すデータ列が格納されている。 行列の乗算 A * B を行い、結果を画面に出力するプログラムを作成せよ。

    課題2のヒント

課題の提出について

Oh-o! Meijiを利用して提出せよ。提出期限は金曜日の22:00までとする。

課題のサンプルプログラム