トップページ – C言語編 – 標準ライブラリのリファレンス(名前順)
トップページ – C言語編 – 標準ライブラリのリファレンス(ヘッダ別)
概要 | 標準入力から、変換指定を伴った文字列を受け取る。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ヘッダ | stdio.h | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
形式 | int scanf(const char* restrict format, …); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
引数 | format | 変換指定を伴った文字列。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
… | 入力された値を受け取るメモリアドレスの指定。format に含まれている変換指定子に対応した個数と型であること。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
戻り値 | 変換を1つも行えないまま入力エラーが起きた場合は、EOF を返す。その他の場合には、正常に代入を行えた個数を返す。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
詳細 |
入力された値が、可変個引数の部分に指定したメモリアドレスへ格納される。
入力が得られなかった場合や、表現できない文字が入力された場合は入力エラーが発生する。また、型が不適切であるような、不適切な入力が起こると照合エラーが発生する。
引数format の基本形式は、“%d” や “%s” といったように、指定の開始を意味する %記号と、変換指定子の組み合わせである。この指定の組み合わせ1つにつき、引数… の個数を1つ増やす。
変換指定子には以下のものがある。対応する実引数の型はデフォルトのものであり、後述する変換修飾子によって変化する。
指定開始文字% の直後に、* を置いた場合、変数への格納が抑制される。たとえば、“%*d %s” という指定に対して、「100 abc」という入力がなされた場合、%d 指定の効果によって、100 は読み取られるが、変数への格納は行われず、後続の %s変換へ進む。
任意で * を置いた直後には、最大フィールド幅の指定を置いても良い。これは 10進整数で指定し、変換結果が最大で何文字分の幅を取るかを意味する。たとえば、“%10s” という指定によって、文字列を 10文字分まで読み取る。
任意で最大フィールド幅の指定を置いた直後に以下の変換修飾子を指定してもよく、このさらに後続に続く変換指定子が、対応する実引数にどのように適用されるかを指示する。
wN の N は、先頭に 0 が付かない 10進整数を意味する(たとえば wfN の N は、先頭に 0 が付かない 10進整数を意味する(たとえば
変換修飾子の直後には、変換指定子が来る。これは省略できない。
引数format の中で、空白類文字(半角スペースやタブ文字📘)は、複数の連続した空白類文字を無視することを表す。1文字の空白類文字を読み飛ばす目的で、“%d %d” のように、1文字の空白類文字を挟み込んでも、入力された文字列内で連続していれば、すべての空白類文字は読み飛ばされる。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
注意 | 必要な個数の実引数が指定されていない場合の動作は未定義📘。余分に指定されている場合には、評価📘は行われるが、scanf関数としては無視する。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
使用例 |
実行結果:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
関連 |
任意のストリームに対して同様の変換指定を行い出力するには、fscanf関数を使う。対象が文字列の場合は sscanf関数が使える。
引数に … ではなく、va_list を用いたバージョンとして、vscanf関数がある。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
解説章 | 第7章 |
本ページはアフィリエイトプログラムによる収益を得ています。
以下のリンクから商品を購入されると、Programming Place 管理者に紹介料が支払われています。
(
の直後、)
の直前に空白を入れない)return 0;
を削除(C言語編全体でのコードの統一)
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |