式の変換指定子を使って文字列を解析します。関数と同じ方法で入力文字列のフィールドを解析し、変換の行われた回数を返します。なんの変換も行われないうちに入力文字列が終端に達する場合は、-1を返します。解析したい入力を与え、formatはsscanfで%変換指定子を使って、どのようにそれを解析するかを示します。変数の名前を示します。フィールドがスキャンされたときに、結果が文字列に変換し戻されて対応する変数に割り当てられます。変数が指定されないと、scanはインライン方法で機能します。それ以外の場合はリストとして変数に格納されるデータを返します。インラインの場合において、全ての変換が行われる前に、入力文字列の終端に到達すると空文字列は返されます。ともにスキャンしながら、操作を行います。内の任意の数(0を含む)の空白文字にマッチします。次の文字と一致しなければなりません。内の%は変換指定子の始まりであることを示します。変換指定子は%の後に最大4つのフィールドを持ちます。*は、変換された値が変数に割り当てられる代わりに捨てられることを示します。XPG3は、ポジション指定子です。次は、最大のフィールド幅を示す数字、及び変換文字です。変換文字を除いて、これらのフィールドは省略可能です。存在するフィールドは上記で与えられた順番に現れなければなりません。空白文字をスキップします。それから次の入力文字列を変換指定子に従って変換し、scanへの次の引数で与えられる変数に保存します。”%2$d”のように、%の後が1つ10進数と$を付いている場合、使用する変数は後続する引数からは採りません。代りに、それは数で示された位置にある引数からとります。取りでなければなりません。1つずつの変換指定子と対応しなければなりません。ないと、エラーが生成されます。全ての位取りは1度だけ指定できます。取りは空文字列に書き込まれます。次の変換文字がサポートされています。doxuicse、f、またはg[chars][^chars]nd入力フィールドは10進数の整数でなければなりません。読み込まれ値は10進数文字列として変数に保存されます。Lフィールドサイズ修飾子が与えられると、スキャンされた値はサイズで少なくとも64ビットである内部の表現を持っています。o入力フィールドは8進数の整数でなければなりません。読み込まれ値は10進数文字列として変数に保存されます。Lフィールドサイズ修飾子が与えられると、スキャンされた値はサイズで少なくとも64ビットである内部の表現を持っています。ビット整数を使うプラットホームで017777777777)を越えるならば、符号付き整数に切り捨てられます。x入力フィールドは16進数の整数でなければなりません。読み込まれ値は10進数文字列として変数に保存されます。Lフィールドサイズ修飾子が与えられると、スキャンされた値はサイズで少なくとも64ビットである内部の表現を持っています。ビット整数を使うプラットホームで0x7FFFFFFF)を越えるならば、符号付き整数に切り捨てられます。u入力フィールドは10進数の整数でなければなりません。その値は非符号化10進数文字列として変数に保存されます。Lフィールドサイズ修飾子が与えられると、スキャンされた値はサイズで少なくとも64ビットである内部の表現を持っています。i入力フィールドは整数でなければなりません。同じ方法で決定されます。その値は10進数文字列として変数に保存されます。Lフィールドサイズ修飾子が与えられると、スキャンされた値はサイズで少なくとも64ビットである内部の表現を持っています。c1つの文字が読み込まれそのバイナリ値が10進数文字列として変数に保存されます。この場合では先頭の空白はスキップされません。したがって入力フィールドは空白文字でもかまいません。標準と異なる点は、入力フィールドが常に1つの文字であるということと、フィールド幅を指定できないことです。s入力フィールドは次の空白文字まで全部文字で構成されています。それらの文字は変数にコピーされます。g入力フィールドは浮動小数点数でなければなりません。続く省略可能な符号と10進数から構成されなければなりません。読み込まれたものは、浮動小数点数の文字列として変数に保存されます。内のいくつかの文字で構成されます。マッチした文字列は変数に保存されます。一部として扱われます。間のあらゆる文字はマッチします。一部分として扱われます。内に含まれない、いくつかの文字で構成されます。マッチした文字列は変数に保存されます。一部として扱われます。間のあらゆる文字はセットから排除されます。一部分として扱われます。n入力文字列から消費される入力はありません。その代りに、そこまで入力文字列からスキャンされた文字の総数は変数に格納されます。%dとしてできる限り多くの10進数字、%oとしてできる限り多くの8進数字、以下同様)。フィールドの最大幅に達するかのどちらが先に来ても終了します。変換指定子に*が現れると変数は割り当てられず、次のスキャン引数は消費されません。関数の振る舞いと以下の違いを除いて同じです。[1]%p変換指定子は現在サポートされません。この変換ではフィールド幅を指定することが認められていません。内部の表現ではdouble型が使われます)。[4]あらゆる変換が行われる前に入力文字列の終端に到達するかつ変数が与えられないと、空文字列は返されます。