【C言語】scanf関数の文法と使用例を初心者にもわかりやすく解説!

はじめに

どうも! 高杉 皆為(@MinatameT)です。

C言語でよく使われる関数として「scanf関数(スキャン・エフ関数)」があります。scanf関数は、値や文字などを「入力」するときに使われます。

この記事では、C言語初心者の方々のために、scanf関数の文法と使用例を説明していきます。

※初心者が対象なので、必要最低限の情報のみを掲載しています。

全然難しくないので、少しずつ確実に理解していきましょう!

scanf関数の文法

scanf関数の文法を紹介!

scanf関数の文法の基礎

printf関数の文法は、次のとおりです。使用例は後ほど紹介します。

scanf("入力変換指定子",変数の場所);

入力変換指定子とは、入力する値などを「どのように表現しているのか」……というものです。これは、すぐ後で紹介します。

変数の場所とは、普通の変数名の前に「&」をつけることで表現します。また、ポインター変数(わからない場合は読み飛ばしてもらってOKです。)の前には何もつけません。

覚えておきたい入力変換指定子

ここで、覚えておきたい入力変換指定子を表にまとめました。

入力変換指定子代表的な変数の型簡単な説明
%dint、int[]整数値を入力します。int[]はintの配列です。
%ldlong、long[]整数値を入力します。long[]はlongの配列です。
%ffloat、float[]小数値を入力します。float[]はfloatの配列です。
%lfdouble、double[]小数値を入力します。double[]はdoubleの配列です。
%cchar半角文字(1文字分)を入力します。
%schar[]半角文字(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関数は本当によく使いますので、各自で練習しておきましょう!

今回はここまでです。皆さん、お疲れさまでした。


 

みなためじゃんけん

このコーナーは、私と擬似的にじゃんけんできるコーナーです。

みなためじゃんけん、じゃんけんぽん!

私が出したのは……





チョキでした! グーの勝利です!



この記事をSNSでシェアする

プログラミングカテゴリーの最新記事(5件)

最新記事(10件)

管理人のTwitter

内部リンク集