arrow 若葉プログラミング塾 > 知識の玉手箱 > C関数リファレンス >
scanf()
scanf()

この関数の目的

scanf()は、標準入力からフォーマットされた文字列を取得する。

定義

	#include <stdio.h>
	int scanf(const char *format, ...);

働き

この関数は第一引数に stdout を指定した fscanf() と等価である。

返り値は、出力した文字数である。エラーが発生した場合、負の数を返す。

解説

format の書き方は fscanf() を参照のこと。

言わずと知れた初心者の友であるが、少しクセのある関数なので、いきなり落とし穴にはまる人も多い。

まず、この関数は可変長引数関数 (Variable argument) と呼ばれる特殊な関数である。 この種の関数は宣言の引数リストの最後に「...」がついているもので、ここから後はどんな型のいくつの変数であろうと渡すことができる。 しかし、渡される側はどんな型のいくつの変数が渡されたかを直接知る手段はない。関数は format に渡される文字列を元に、これらの引数の数と型を知る。 よって、 format の文字列と実引数リストが食い違っていてはいけない

可変長引数関数については、 <stdarg.h> を参照されたい。

arrow 若葉プログラミング塾 > 知識の玉手箱 > C関数リファレンス >
KC