「標準入力」はキーボードのことである。余談ではあるが、「標準出力」とはディスプレイのことである。このようにわざわざ難しく言い替えるのは、より一般的な入出力(主に他のファイル)に対して使うためである。
プログラムを実行した時に、値をプログラム内で代入するのではなく、標準入力から直接与えるための関数 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> ----------------------------------------------------------------------