DETAILS ON SCANNING
Scan operates by scanning string and formatString together.
If the next character in formatString is a blank or tab then it
matches any number of white space characters in string (including
zero).
Otherwise, if it isn't a % character then it
must match the next character of string.
When a % is encountered in formatString, it indicates
the start of a conversion specifier.
A conversion specifier contains three fields after the %:
a *, which indicates that the converted value is to be discarded
instead of assigned to a variable; a number indicating a maximum field
width; and a conversion character.
All of these fields are optional except for the conversion character.
When scan finds a conversion specifier in formatString, it
first skips any white-space characters in string.
Then it converts the next input characters according to the
conversion specifier and stores the result in the variable given
by the next argument to scan.
The following conversion characters are supported: