もくじ
はじめに
どうも! みなため(@MinatameT)です。
C言語でよく使われる関数として「scanf関数(スキャン・エフ関数)」があります。scanf関数は、値や文字などを「入力」するときに使われます。
この記事では、C言語初心者の方々のために、scanf関数の文法と使用例を説明していきます。
※初心者が対象なので、必要最低限の情報のみを掲載しています。
全然難しくないので、少しずつ確実に理解していきましょう!
scanf関数の文法
scanf関数の文法の基礎
printf関数の文法は、次のとおりです。使用例は後ほど紹介します。
scanf("入力変換指定子",変数の場所);
入力変換指定子とは、入力する値などを「どのように表現しているのか」……というものです。これは、すぐ後で紹介します。
変数の場所とは、普通の変数名の前に「&」をつけることで表現します。また、ポインター変数(わからない場合は読み飛ばしてもらってOKです。)の前には何もつけません。
覚えておきたい入力変換指定子
ここで、覚えておきたい入力変換指定子を表にまとめました。
入力変換指定子 | 代表的な変数の型 | 簡単な説明 |
%d | int、int[] | 整数値を入力します。int[]はintの配列です。 |
%ld | long、long[] | 整数値を入力します。long[]はlongの配列です。 |
%f | float、float[] | 小数値を入力します。float[]はfloatの配列です。 |
%lf | double、double[] | 小数値を入力します。double[]はdoubleの配列です。 |
%c | char | 半角文字(1文字分)を入力します。 |
%s | char[] | 半角文字(1文字分以上)を入力します。char[]はcharの配列です。 |
scanf関数の使用例
ここからは使用例を紹介していきます。例の数が多いように見えますが、絶対に使えるようにしてほしいものだけを紹介しています。
int型変数の値の入力
#include<stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
return(0);
}
このプログラムを実行してみるとわかるのですが、「値が本当に入力されたのかどうか」がわかりません。なぜなら、入力した値の表示をしていないからです。
したがって、printf関数という表示機能を使って、入力した値を表示していきます。printf関数の詳細については、次の記事をご覧ください。
それでは、上記のコードにprintf関数を加えてみます。printf関数がわからなければ、後で理解すればOKですので、今はscanf関数だけに注目してください。
#include<stdio.h>
int main(void)
{
int a;
printf("aの値を入力してください。>");
scanf("%d",&a);
printf("a = %d",a); //入力した値の表示
return(0);
}
これで、入力した値が表示されるようになりました。それでは、このプログラムの実行結果の例を見ていきましょう。
aの値を入力してください。>100
a = 100
入力したaの値が正しく表示されていることがわかります。正しく入力できた証拠ですね。この文法が理解できれば、後は同じような調子でいけます。
long型変数の値の入力
#include<stdio.h>
int main(void)
{
long f;
printf("fの値を入力してください。>");
scanf("%ld",&f);
printf("f = %d",f); //入力した値の表示
return(0);
}
long型変数の入力変換指定子は「%ld」なので、間違えないようにしましょう。また、値の代入先の変数名は「f」なので、&fを記述しておきます。
このプログラムの実行結果の例は、次のようになります。
fの値を入力してください。>1234567890
f = 1234567890
入力したfの値が正しく表示されています。つまり、正しく入力できたということです。
float型変数の値の入力
#include<stdio.h>
int main(void)
{
float b;
printf("bの値を入力してください。>");
scanf("%f",&b);
printf("b = %f",b); //入力した値の表示
return(0);
}
float型変数の入力変換指定子は「%f」なので、間違えないようにしましょう。また、値の代入先の変数名は「b」なので、&bを記述しておきます。
このプログラムの実行結果の例は、次のようになります。
bの値を入力してください。>3.14
b = 3.140000
入力したbの値が正しく表示されています。つまり、正しく入力できたということです。
ちなみに、3.140000と「小数第6位」まで表示されていますが、実はこれで正解です。表示桁数を指定していない場合は、小数第6位まで表示されることになっています。
double型変数の値の入力
#include<stdio.h>
int main(void)
{
double c;
printf("cの値を入力してください。>");
scanf("%lf",&c);
printf("c = %f",c); //入力した値の表示
return(0);
}
double型変数の入力変換指定子は「%lf」なので、間違えないようにしましょう。また、値の代入先の変数名は「c」なので、&cを記述しておきます。
このプログラムの実行結果の例は、次のようになります。
cの値を入力してください。>3.14159
c = 3.141590
入力したcの値が正しく表示されています。つまり、正しく入力できたということです。
また、表示桁数を指定していないので、小数第6位まで表示されています。
char型変数の文字の入力
#include<stdio.h>
int main(void)
{
char d;
printf("dの文字を入力してください。>");
scanf("%c",&d);
printf("d = %c",d); //入力した文字の表示
return(0);
}
char型変数の入力変換指定子は「%c」なので、間違えないようにしましょう。また、値の代入先の変数名は「d」なので、&dを記述しておきます。
このプログラムの実行結果の例は、次のようになります。
dの文字を入力してください。>X
d = X
入力したdの文字が正しく表示されています。つまり、正しく入力できたということです。
char型配列変数の文字列の入力
#include<stdio.h>
int main(void)
{
char e[16];
printf("eの文字列を入力してください。>");
scanf("%s",&e);
printf("e = %s",e); //入力した文字列の表示
return(0);
}
char型配列変数の入力変換指定子は「%s」なので、間違えないようにしましょう。また、値の代入先の変数名は「e」なので、&eを記述しておきます。
※配列なので「&」はつけなくても良いのですが、ここではつけておきます。
このプログラムの実行結果の例は、次のようになります。
eの文字列を入力してください。>ABCDEFG
e = ABCDEFG
入力したeの文字列が正しく表示されています。つまり、正しく入力できたということです。
……ここまでが、scanf関数の基本です。scanf関数は本当によく使いますので、各自で練習しておきましょう!
今回はここまでです。皆さん、お疲れさまでした。