next up previous
: 算術関数 : 標準関数を使った例 : 標準関数を使った例

標準入力からの入力

「標準入力」はキーボードのことである。余談ではあるが、「標準出力」とはディスプレイのことである。このようにわざわざ難しく言い替えるのは、より一般的な入出力(主に他のファイル)に対して使うためである。

プログラムを実行した時に、値をプログラム内で代入するのではなく、標準入力から直接与えるための関数 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> 

----------------------------------------------------------------------