入力の基礎


キーボードから値を入力する

これまでは指定した文字列や定数、変数をprintf()で出力するということを学びました
しかし、その流れは全て不変です。何度実行しても必ず同じ結果が得られます
あなたがプログラム好きか、もしくはプログラムに高い関心があるのなら「より動的にしたい」と思うはずです

私たちが普段コンピュータのプログラムを使うときは、必ず同じ結果が得られるとは限りません
計算機を使えば「指定した算術」の結果が返されます。ですがまったく同じ結果がいつも返されるわけではありませんね
計算機プログラムは「指定した算術」によって異なる結果が得られます

では、なぜ異なる結果が得られるのか
理由は沢山ありますが、私たちがまだ習っていない内容で非常に重要なポイントがあります
計算機でも、テキストエディタでも、その作業の多くはソフトを使うユーザーの入力によって常にちがう結果が得られます

現代のWindowsなどのマルチタスクOSで言う「入力」は沢山考えられます
マウス、キーボード、ジョイスティック、タブレットなどですね
しかし、私たちが今習っているプログラムは「コンソール」と呼ばれる対話式のプログラムです(代表例はDOSですね)
ですから、その他のインタフェイスからの入力はその処理系の規格に依存することにして
これから私たちはキーボードからの入力を学びます

キーボードから値を入力するとはどういうことをするのか、こういわれると難しそうですがなんてことはありません
キーボードから入力された値を変数に代入するだけです
変数に値を入力する方法は、前回たっぷりと習いましたね

さて、標準出力に文字列などを渡すにはprintf()関数を使いました
私たちがこれから値を受け取ろうとしているのは標準入力です
やはりこれも関数を使います。標準入力から値を受け取るにはscanf()関数を用います

scanf ("フォーマット",&変数名);

scanf()関数はprintf()関数の入力版のようなものです
やはりprintf()関数同様に、フォーマットで指定された書式で変数に値が代入されます
つまり、%dが指定されていれば10進整数(int型)で変数に値が代入されることになります
#include <stdio.h>

int main()
{
        int get_var;
        printf("何か数値を代入してください\n");
        scanf("%d" , &get_var);
        printf("入力された値は %d です" , get_var);

        return 0;
}
このプログラムは、まず値の入力をユーザーに求め、入力された値をint型変数get_varに代入されます
そしてprintf()関数で入力された値を保存しているget_var変数を参照しています

注目してほしいのは scanf() 関数です。フォーマットはわかりますよね、%dは10進数で値を受け取ってます
問題はその入力された値を10進数で受け取って、変数に代入するときです
int型の変数 get_var の前に&記号が付いてますよね、これが非常に重要です
この&演算子の詳しい詳細は後ほど紹介します。この場ではあまりにも難しい話になります
今大切なのは、キーボードから値を受け取り変数に代入することです
scanf()関数を使うときは、とにかく第二引数には &変数名 という書式だと覚えてください


int scanf(const char *format , ...);

【ヘッダ】stdio.h
書式付データを標準入力から受け取ります
プログラムを停止して入力を待ちます。Enterが押されるまで次のプログラムには行きません

format 必ず指定します。入力データの書式を指定します
... 必ず指定します。読み込んだデータを代入するポインタを指定します



前のページへ戻る次のページへ