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関数の使い方でした。