今回のC言語入門では、キーボードから入力された値を読み込んで、対話的に表示させてみましょう。
そして、C言語の難関と言われる「ポインタ」についても少し触れていきます。
それでは、はじめましょう!
キーボードから読込んだ値を表示させよう
まずは、このソースコードを打ち込んで実行して下さい。
/* List1-5 読み込んだ整数値を表示させよう */ #includeint main(void){ int no; printf("整数を入力してください:"); scanf("%d", &no); //整数値を読み込んで変数noに格納する printf("入力された値は%dです。\n", no); return(0); }
コンパイル後、正常に実行すればこのように表示されます。今回は、整数「99」を入力しました。
$ gcc -o List1-5 List1-5.c $ ./List1-5 整数を入力してください:99 入力された値は99です。
【解説1】scanf(スキャンエフ)で値を読込む
キーボードから入力された数値などを読み込むにはscanf関数を使います。
今回は「入力された10進数の値を読み込んで、変数noに格納しなさい」といった意味になります。
また、scanf関数ではputs関数と同じように、\nを入れなくとも改行されます。
【解説2】scanf関数とポインタ
変数の前に記号&(アンパサンド)が付いていますね。
&は「アドレス演算子」と呼ばれ、変数が割り当てられているメモリのアドレスを取得します。
scanf ( “%d” , &no ) ;
実は、scanf関数では関数内に受けとった値を、関数外の変数に格納することはできません。
そういった場合は、変数が割り当てたメモリ上のアドレスにポインタを使って間接的に格納してあげます。
今回でいうと、 「scanfの関数内で値を受けとる変数」がポインタとなり、入力された値を「&で取得したnoのアドレス」に間接的に格納したことになります。
詳しくは、ポインタの章で説明しますので、今は「scanf関数の引数には&を付ける」ということを覚えて下さい。
おまけ
ちなみに、&を付けないとWARNINGメッセージが表示され、実行結果もエラーとなります。
warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=] scanf("%d", no); //整数値を読み込む
コメント