C言語 scanf関数の簡単な使い方 文字列を受け取る

scanf関数はコマンドラインなどから入力を受け付け、
入力されたデータを格納する事ができる関数です。

簡単な使い方をご紹介します。

基本的な使い方と数値を受け取る方法

#pragma warning(disable: 4996)
#include <stdio.h>

int main() {
	int a = 0;
  printf("数値を入力してください\n");
	scanf("%d", &a);
	printf("a = %d", a);
}

結果は以下のようになります。

数値を入力してください
100
a = 100

まず、scanf関数を使うためには、
#include <stdio.h> と言う表記が必要です。

また、#pragma warning(disable: 4996) と言う表記も必要ですが、
これについては、ここでは詳しく説明はしません。

今のところは、表記する事が必要。
と言う事だけ覚えておけば問題ありません。

#includeについて詳しい事を知りたいかたは、
コチラのページをご覧ください。

scanf関数で数値を受け取りたい場合には、
第1引数に”%d”と言う特殊な表記をします。
%d は数値を扱う指定子と呼ばれるモノです。

そして、第2引数には、格納先のアドレスを指定します。
今回は変数aに格納したいので、&a(aのアドレス値)と書きます。
(アドレスについて詳しく知りたい場合は
ポインタの解説記事をご覧ください。)

そして、いざプログラムが実行されると、
scanf関数のところで一旦止まり、
ユーザーからの入力を受け付けます。

ここで例えば10 50 700などの数値をキーボードから入力し、
Enterキーを押します。

そうすると、プログラムが再び動き出し、
入力された値が変数aに格納され、
printf関数で変数aの値が表示されます。

文字列を受け取る

今度は文字列を受け取ってみましょう。

#pragma warning(disable: 4996)
#include <stdio.h>

int main() {
	char str[50];
  printf("文字列を入力してください\n");
	scanf("%s", str);
	printf(str);
}

実行結果は以下のようになります。

文字列を入力してください
プログラム
プログラム

今度は文字列を受け取りたいので、
あらかじめ、文字列を受け取るための領域を確保しておきます。

そして、scanf関数では、文字列を受け取るために
第1引数に文字列を表す%sを指定します。

これで文字列を受け取る事ができます。
(半角文字のほか、全角文字もOKです。)

ただし、例えばユーザーからの入力された文字数が、
今回用意した領域50よりも多かった場合は、
エラーか例外などが発生し、異常終了してしまいます。

このような不具合が起きないために用意されたのがscanf_s関数です。
scanf_s関数を使えば、受け取る最大数を指定する事ができます。

ですが、WindowsのVisualStudio環境でしか使えないようです。


基本的なscanf関数の使い方でした。