scanf関数について
この項目で学ぶこと
scanf関数について
scanf関数を用いることで、キーボードから入力された値を変数に格納することが出来ます。
使い方
まずはサンプルソースを見てください。
#include<stdio.h> int main (){ int sampleInput; printf("整数を入力して、Enterキーを押してください\n"); scanf("%d",&sampleInput); printf("あなたが入力した整数は「%d」です。\n",sampleInput); return 0; }
これで変数に値を格納することが出来ました。scanf関数で値を変数に格納するには第1引数(カッコの一つ目の情報)に受け取る変数の型の指定をします。これはprintf関数で使用したものとほとんど一緒です。第2引数に値を格納する変数のポインタを指定します。ポインタの詳しい説明は別の講義でします。今はscanf関数で変数に値を入れるには変数名の前に&が必要と形式的に覚えてください。
ところで、scanf関数をVisual C++で記述すると警告が出てきます。実はこの関数はバグを引き起こしやすいのです。たとえば大きな値を格納するときや文字列を格納するときに不具合が発生しやすいです(もちろん正しく使えばそのようなことはありません)。そのような不具合を起こさない、起こしにくい関数をVisual C++で用意してあるので、そちらを使いなさいと警告しているのです。この場合、scanf_s関数を用いれば警告が消えます。使い方はまったく一緒です。独自に用意されているもののため、無理に使う必要はありません。この警告を消す方法はVisual C++の警告抑止についてをご覧ください。
ところで、scanf関数をVisual C++で記述すると警告が出てきます。実はこの関数はバグを引き起こしやすいのです。たとえば大きな値を格納するときや文字列を格納するときに不具合が発生しやすいです(もちろん正しく使えばそのようなことはありません)。そのような不具合を起こさない、起こしにくい関数をVisual C++で用意してあるので、そちらを使いなさいと警告しているのです。この場合、scanf_s関数を用いれば警告が消えます。使い方はまったく一緒です。独自に用意されているもののため、無理に使う必要はありません。この警告を消す方法はVisual C++の警告抑止についてをご覧ください。
サンプルソース
入力された2つの変数を足して結果を出力するソース
#define _CRT_SECURE_NO_WARNINGS // 警告抑止定義。「書かなくても動作に違いはありません」 #include<stdio.h> int main(){ int add1,add2; // 足す数を記憶する変数。 printf("2つの整数を足します。\n"); printf("1つ目の値を入力してください:"); scanf("%d",&add1); // 変数の前に「&」を忘れない printf("2つ目の値を入力してください:"); scanf("%d",&add2); printf("%d+%d=%d\n",add1,add2,add1+add2); // 足した結果を出力 }