「標準入力」はキーボードのことである。余談ではあるが、「標準出力」とはディスプレイのことである。このようにわざわざ難しく言い替えるのは、より一般的な入出力(主に他のファイル)に対して使うためである。
プログラムを実行した時に、値をプログラム内で代入するのではなく、標準入力から直接与えるための関数 scanf を用いる。scanf は標準ライブラリ stdio.h で定義されている。先の例 ludolph.c において、疑似乱数の種 iseed を直接与えられるようにしてみよう。先のプログラムで、変更点のみを以下に示す。
ludolph.c ------------------------------------------------------------ … int iseed; /* 乱数のたね <-- 変更する。*/ … double x,r, pi; /* x(y)座標, 動径の大きさ, 円周率 */ /* 「種」の値を決める <-- 以下を挿入する。*/ printf("乱数の「種」を代入してください(整数型, 1 〜 %d-1) : ",IM); scanf("%d",&iseed); while((iseed >= IM) || (iseed <= 0)){ printf("値が不適当です。代入しなおしてください(整数型, 1 〜 %d-1) : ",IM); scanf("%d",&iseed); } ----------------------------------------------------------------------
関数 scanf は次のように書く。
scanf("データ書式 データ書式, …",&変数名, &変数名, …);データ書式は関数 printf で説明したものと同じである。変数名の前 についている ''
&
'' は今のところおまじないだと思って良い。
今の例では int 型の変数 iseed に代入するようにした。た
だし、iseed の範囲は 1 〜 IM-1
なので(理由は乱数の発生方法を見れば一目瞭然である)、それ以外の値を代入した時には再度問い合わせるようにする。その部分は while 文を使って、値が適切なものになるまで繰り返すようにした。
実行結果 ------------------------------------------------------------- s1:~/c_text> gcc -o ludolph ludolph.c s1:~/c_text> ./ludolph 乱数の「種」を代入してください(整数型, 1 〜 259200-1) : -50 値が不適当です。代入しなおしてください(整数型, 1 〜 259200-1) : 54321 pi = 3.151200 s1:~/c_text> ----------------------------------------------------------------------