scanf関数

 ここまでの記事の中で多用してきました「printf関数」。こちらは、数字や文字を表示する(出力するとも言います)ための命令でした。printf関数を利用するためには「stdio.h」という名前のヘッダファイルと呼ばれるものをソースコードに含めなくてはならず、毎回、ソースコードの先頭に「#include <stdio.h>」と書いていました。

 さて、このstdio.hというヘッダファイルですが、stdioは「standard input/output」の略(日本語に訳すと、標準入出力)です。何が言いたいかと言いますと、printf関数と対をなすように、入力のための関数があるのです。それがscanf関数です。出力する関数であるprintf関数は、画面(コンソール)に表示するための関数ですが、scanf関数は、処理の途中でキーボードから文字の入力を求め、入力されたものを処理に利用するというものです。

 説明だけではわかりにくいと思いますので、以下のプログラムを書いて実行してみて下さい。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    int input;
    
    printf("数字を入力して下さい。\n");
    
    scanf("%d", &input);
    
    printf("入力された数字は、%dです。\n", input);
    
    return 0;
}

 実行すると、以下のような内容が出力され、処理が一時ストップします。

数字を入力して下さい。

 処理がストップすると書きましたが、実際は処理のストップではなく、キーボードからの入力待ちの状態です。ここで、半角数字の3を入力し、エンターキーを押します。すると、処理が再開され、表示内容が、

数字を入力して下さい。
3
入力された数字は、3です。

 このようになります。「scanf("%d", &input);」の括弧の中には2つの指定(引数と呼びます)がされていて、最初の"%d"は、printf関数と同様で、どのようなデータ型の入力を受け付けるかを指定するものです。"%d"なら整数型、というのもprintf関数と同じです。2番目の引数に、キーボードから入力されたものを格納する変数を指定します。尚、scanfの2番目の引数に変数を指定する際は、「&(変数名)」というように「&」をつけてポインタとして扱って下さい。そういうルールだと思っていただいて構いません。今後も、C言語の命令で、ポインタを指定しないとならないものは複数ありますので、注意して下さい。

 基本的には、printf関数とscanf関数で入出力の命令は使えます。整数型でも小数型でも文字型でも。ただ、文字や文字列を扱うのであれば、もっと便利に使える命令が存在します。次回は、その関数をご紹介します。

■スポンサーリンク

このページの先頭へ