値の入力
2012年4月12日:C言語
プログラムではユーザーとのやりとりがなくては意味がありません。ここでは、ユーザーとのやりとりの一種である値の入力方法を解説します。解説する方法を用いることで、コンソールから文字列や値を取得することができます。
値の入力
C言語で整数を入力する際は
値の入力
scanf(“フォーマット指定子”,&変数名);
という命令を使います。フォーマット指定子に関しては「前回の記事」に一覧があるので参考にしてください。例えば、
int num; scanf("%d",&num);
とすれば、整数をコンソール上で入力し、numへ値を入力することができます。ここで、%dはint型変数のフォーマット指定子です。
&numは変数numを記憶している場所(アドレス)を示しています。変数に「&」をつけることで、変数のアドレスを知ることができるのです。例えば、
#include <stdio.h> main(){ int a=0; printf("%p\n",&a); }
とプログラムを書くと、変数aのアドレスを表示できます。ここで%pはアドレスのフォーマット指定子です。このプログラムを実行すると、
0x7fff55b2dba8
というように、変数aの記憶場所を16進数で表示してくれます。scanfでは、
- 変数のメモリのアドレスを教える
- scanfがキーボードから値を読み込み指定した変数のアドレスに入力する
ということをしてくれます。この結果、変数aの値にキーボードからの値が入るようになります。もしも、
scanf("%d",a);
のようにすると、変数aの値はわかるけど、アドレスがわからないので結果をどこに格納すればいいかがscanfにはわかりません。でも、
a=scanf("%d",a);
にようにscanfが戻り値を返すように設計すればいいはなしですが、このようにはなっていません。たぶん、このように書くと命令が長くなるからでしょう。
サンプルプログラム
では、以下のようにtest.cというファイルを作ります。
#include <stdio.h> int main() { int num; float f; printf("整数を入力してください:"); scanf("%d",&num); printf("実数を入力してください:"); scanf("%f",&f); printf("整数値は%dです。\n",num); printf("実数値は%fです。\n",f); return 0; }
そして、コンパイルして実行します。 すると以下のようになります。
整数を入力してください:21
実数を入力してください:2.3
整数値は21です。
実数値は2.300000です。
できたでしょうか? 基本なのでしっかり身に着けておきましょう。
著者:安井 真人(やすい まさと)
@yasui_masatoさんをフォロー