C 言語における scanf 関数の詳しい説明
C言語で標準入力からデータを読み込むための関数、scanf関数は次のように記述できます。
int scanf(const char *format, ...);
scanf() 関数はフォーマット文字列内のフォーマット制御記号に従って標準入力ストリームからそれぞれ対応する型のデータを読み取り、対応する変数に格納します。入力データは空白文字(スペース、タブ、改行)によって区切られます。
よく使われる書式制御文字とその機能は次のとおりです。
- %d:10 進数の整数を読み込みます。
- %f:単精度浮動小数点数を1つ読み込みます。
- %lf: double 型の浮動小数点数を読み取ります。
- %c:文字を読み込む。
- %s: 文字列を読み込みます。
- %u : 符号なし10進整数を読み取る
- %x: 符号なし 16 進数整数を読み込みます。
- %o:無符号8進整数を読み込みます。
scanf関数は正常終了した場合、与えられた引数の個数を返し、エラーが発生した場合はEOFを返します。文字列を読み取るとき、scanf関数は空白文字を読み込むとそこで終了し、空白文字は入力ストリームに残ります。
scanf関数は、入力ストリームの内容がフォーマット制御記号と一致していない場合、正しく出力が行われない可能性があります。この状況を避けるために、scanf関数の戻り値を使用して、意図した数のパラメータが正常に読み取られたかどうかを確認できます。
scanf関数は文字列を入力する際、自動的に末尾にヌル文字’\0’を追加します。文字列を定義する時、十分なバッファ領域を確保してください。固定長の文字列を読み取る場合は、%nsという修飾子を使用して読み取る文字数を制限できます。例えば、%10sは最大10文字の文字列を読み取ります。
さらに、scanf 関数は書式制御子に修飾子を追加することで読み込み動作を変更できます。例えば、
- :このパラメータの読み取りをスキップします。
- h:short型データを読み込みます。
- l: long型のデータを格納します。
- L: long double 型のデータを格納する。
scanf関数は、C言語で標準入力からデータを読み込むのに用いられる関数で、書式制御文字に従ってさまざまな型データを読み込むことができます。データのフォーマットが一致していることや、入力エラーの処理に注意して使用する必要があります。