≫ ホーム ≫ C言語ヘッダファイル別一覧 | C言語アルファベット別一覧 ≫ stdio.h ≫ scanf
標準入力 (standard input) から書式文字列に従ってデータを読込みます.
#include <stdio.h>
int scanf( const char * restrict format, ... );
scanf 関数は format が指す書式文字列に従って標準入力から入力されたデータを読込み,format に続く引数の指すオブジェクトに代入します.
scanf の動作は与えられた引数の前に stdin を引数として付加した fscanf と同じです.
注意!
scanf はバッファオーバーフロー (buffer over-flow) を発生させやすい関数の 1 つです.
書式文字列には通常の多バイト文字 (multibyte character) と変換指定を記述できます.
変換指定の形式は以下の通りです.なお [ ] で囲まれた部分は省略可能です.
%[代入抑止文字][フィールド幅][長さ修飾子]変換指定子
代入抑止文字 に * (アスタリスク) を指定すると指定された型は引数に代入されず読み飛ばされます.
長さ修飾子 に指定できる文字は以下の通りです.
長さ修飾子 | 意味 |
---|---|
hh | 対応する実引数の型が char 型であることを指定する |
h | 対応する実引数の型が short 型であることを指定する |
l (エル) | 対応する実引数の型が long 型か wchar_t 型であることを指定する |
ll (エルエル) | 対応する実引数の型が long long 型であることを指定する |
j | 対応する実引数の型が intmax_t 型であることを指定する |
z | 対応する実引数の型が size_t 型であることを指定する |
t | 対応する実引数の型が ptrdiff_t 型であることを指定する |
L | 対応する実引数の型が long double 型であることを指定する |
変換指定子 | 読取り可能な文字等 | 対応する引数 |
---|---|---|
d | 10 進整数 | 符号付き整数型へのポインタ |
i | 整数 | 符号付き整数型へのポインタ |
o | 8 進整数 | 符号無し整数型へのポインタ |
u | 10 進整数 | 符号無し整数型へのポインタ |
x | 16 進整数 | 符号無し整数型へのポインタ |
a, e, f, g | 浮動小数点数に変換する | 浮動小数点型へのポインタ |
c | フィールド幅で指定された長さの文字の並び | ※1 |
s | 非空白類文字列 | ※2 |
p | 処理系定義の文字の並びの集合 (printf関数の %p 変換で出力されるようなポインタの値) | void へのポインタへのポインタ |
n | 入力を読み取らない.その代わり現時点までに入力ストリームから読み取った文字数がポインタに格納される.そのポインタは符号付き整数型へのポインタである必要がある | |
% | 1 つの '%' と照合する | |
[...] | [ ] で囲まれたものだけを文字列として取得する |
※1
※2
たくさんあるc言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.
c言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります.
オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.
ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.