Standard C++ Library Reference ISO/IEC (VERSION3)

Scan Functions
For the scan functions, literal text in a format string must match the next characters to scan in
the input text. White space in a format string must match the longest possible sequence of the
next zero or more white-space characters in the input. Except for the scan conversion specifier
%n (which consumes no input), each scan conversion specification determines a pattern that
one or more of the next characters in the input must match. And except for the scan conversion
specifiers c, n, and [, every match begins by skipping any whitespace characters in the input.
A scan function returns when:
it reaches the terminating null in the format string
it cannot obtain additional input characters to scan (input failure)
a conversion fails (matching failure)
A scan function returns EOF if an input failure occurs before any conversion. Otherwise it
returns the number of converted values stored. If one or more characters form a valid prefix but
the conversion fails, the valid prefix is consumed before the scan function returns. Thus:
scanf("%i", &i) consumes 0X from field 0XZ
scanf("%f", &f) consumes 3.2E from field 3.2EZ
A scan conversion specification typically converts the matched input characters to a
corresponding encoded value. The next argument value must be the address of an object. The
conversion converts the encoded representation (as necessary) and stores its value in the object.
A scan conversion specification has the format shown in the diagram.
Boldface indicates a feature added with C99.
Following the percent character (%) in the format string, you can write an asterisk (*) to indicate
that the conversion should not store the converted value in an object.
Following any *, you can write a nonzero field width that specifies the maximum number of
input characters to match for the conversion (not counting any white space that the pattern can
first skip).