値の入力

値の入力

 プログラムではユーザーとのやりとりがなくては意味がありません。ここでは、ユーザーとのやりとりの一種である値の入力方法を解説します。解説する方法を用いることで、コンソールから文字列や値を取得することができます。

値の入力

 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では、

  1. 変数のメモリのアドレスを教える
  2. 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です。

できたでしょうか? 基本なのでしっかり身に着けておきましょう。

著者:安井 真人(やすい まさと)