スポンサードリンク
HOME > C言語コンソール > scanf関数 基本編

C言語 コンソール scanf関数 基本編

コンソールアプリケーションは、主に文字の表示を行います。

しかし、ただ文字を表示するだけではなく、キーボードから入力を受け付ける事もできます。

キーボードから入力を受け付けるために使うのが、scanf(スキャンエフ)関数です。

この関数を使うとキーボードから数値や文字、文字列等を受け取る事ができます。

早速、使い方を見ていきましょう。



例1 キーボードから数値を受け取る(10進数)

ファイル名:main.c
#include <stdio.h>

void main(void) {
   int a = 0;

   printf("10進数を入力して下さい\n");
   
scanf("%d", &a);
   printf("あなたが入力した10進数は%dです\n", a);

}


実行結果


 ※ "10進数を入力して下さい" の後、キーボードから入力を受け付けるまで
    アプリケーションが停止しますので、好きな数値を入力して
    Enterキーを押して下さい。
    ここでは 50 と入力しています。

 ※ 続行するには何かキーを押してください... と言う記述は
    Visual C++2008特有のモノで、アプリケーションが終了した事を表しています。

解説

10進数をキーボードから入力し、それを表示する簡単なプログラムです。

scanf("%d", &a); 

第1引数には、キーボードから入力された値を
どのように変換して変数に代入するかを指定します。
この例の場合は、%dとなっているので、
キーボードから入力された値を10進数として変数に代入します。

第2引数には、キーボードから入力された値を代入する変数名のアドレスを指定します。
この例の場合は、&aとなっているので、変数aのアドレスが指定されています。
(変数名の前に&(アンパサンド)が付くとその変数のアドレス値を表します。)

以上の事をまとめると、キーボードから入力された値を10進数として変数aに代入する。

と言う事になります。



例2 キーボードから1文字を受け取る

ファイル名:main.c
#include <stdio.h>

void main(void) {
   char cc[1];

   printf("1文字を入力して下さい\n");
   
scanf("%c", cc);
   printf("あなたが入力した文字は%cです\n", cc[0]);

}


実行結果


 ※ 半角英数字のみ対応しています。
 ※ 2文字以上の入力には対応していません。

解説

1文字をキーボードから入力し、それを表示する簡単なプログラムです。

scanf("%c", cc);

文字として入力するには、%cを指定します。

第2引数には、変数のアドレス値を指定するので、&cc[0]と指定してもOKですが、

配列変数は、変数名が先頭要素のアドレス値になるので、ccと指定してもOKとなります。



例3 キーボードから文字列を受け取る

ファイル名:main.c
#include <stdio.h>

void main(void) {
   char cc[80];

   printf("文字列を入力して下さい\n");
   
scanf("%s", cc);
   printf("あなたが入力した文字列は%sです\n", cc);

}


実行結果


解説

文字列をキーボードから入力し、それを表示する簡単なプログラムです。

scanf("%s", cc);

文字列として入力するには、%sを指定します。

第2引数には、代入する配列変数の先頭アドレス値を指定します。

そのアドレス値から順番に1文字ずつ代入されます。

そして、自動で最後にヌル終端文字列が追加されます。

この例では、cgengoと言う入力文字列がcc[0]からcc[5]まで1文字ずつ代入され、

cc[6]には'\0'(ヌル終端文字列)が入ります。

代入する配列変数の大きさは、十分に確保しておかなくてはなりません。

ここでは、要素数を80としていますが、

この値はコンソール上で表示できる1行の最大文字数です。

それぞれのプログラム内容によって安全な要素数を指定する事が大切です。



例4 キーボードから数値を受け取る(16進数)

ファイル名:main.c
#include <stdio.h>

void main(void) {
   int a = 0;

   printf("16進数を入力して下さい\n");
   
scanf("%X", &a);
   printf("あなたが入力した16進数は%Xです\n", a);

}


実行結果


 ※ 16進数以外は対応していません。

解説

16進数をキーボードから入力し、それを表示する簡単なプログラムです。

scanf("%X", &a); 

16進数として入力するには、%x%X を指定します。
どちらも全く同じ機能です。

第2引数には、10進数の時と同じように代入する変数名のアドレス値を指定します。



例5 キーボードから数値を受け取る(8進数)

ファイル名:main.c
#include <stdio.h>

void main(void) {
   int a = 0;

   printf("8進数を入力して下さい\n");
   
scanf("%o", &a);
   printf("あなたが入力した数値は%oです\n", a);

}


実行結果


 ※ 8進数以外は対応していません。

解説

8進数をキーボードから入力し、それを表示する簡単なプログラムです。

scanf("%o", &a); 

8進数として入力するには、%oを指定します。

第2引数には、10進数の時と同じように代入する変数名のアドレス値を指定します。



例6 キーボードから小数値を受け取る

ファイル名:main.c
#include <stdio.h>

void main(void) {
   float f = 0;
   double d = 0;

   printf("小数を入力して下さい\n");
   
scanf("%f", &f);
   printf("あなたが入力した数値は%fです\n", f);

   printf("小数を入力して下さい\n");
   scanf("%lf", &d);
   printf("あなたが入力した数値は%fです\n", d);
}


実行結果


解説

小数値をキーボードから入力し、それを表示するプログラムです。

scanf("%f", &f); 
scanf("%lf", &d); 

小数値として入力するには、%f%lfを指定します。

float型として入力するには%fを使い、double型として入力するには%lfを使います。

第2引数には、10進数の時と同じように代入する変数名のアドレス値を指定します。



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved