(libc.info.gz) Numeric Input Conversions
Info Catalog
(libc.info.gz) Table of Input Conversions
(libc.info.gz) Formatted Input
(libc.info.gz) String Input Conversions
12.14.4 Numeric Input Conversions
---------------------------------
This section describes the 'scanf' conversions for reading numeric
values.
The '%d' conversion matches an optionally signed integer in decimal
radix. The syntax that is recognized is the same as that for the
'strtol' function ( Parsing of Integers) with the value '10' for
the BASE argument.
The '%i' conversion matches an optionally signed integer in any of
the formats that the C language defines for specifying an integer
constant. The syntax that is recognized is the same as that for the
'strtol' function ( Parsing of Integers) with the value '0' for
the BASE argument. (You can print integers in this syntax with 'printf'
by using the '#' flag character with the '%x', '%o', or '%d' conversion.
Integer Conversions.)
For example, any of the strings '10', '0xa', or '012' could be read
in as integers under the '%i' conversion. Each of these specifies a
number with decimal value '10'.
The '%o', '%u', and '%x' conversions match unsigned integers in
octal, decimal, and hexadecimal radices, respectively. The syntax that
is recognized is the same as that for the 'strtoul' function (
Parsing of Integers) with the appropriate value ('8', '10', or '16')
for the BASE argument.
The '%X' conversion is identical to the '%x' conversion. They both
permit either uppercase or lowercase letters to be used as digits.
The default type of the corresponding argument for the '%d' and '%i'
conversions is 'int *', and 'unsigned int *' for the other integer
conversions. You can use the following type modifiers to specify other
sizes of integer:
'hh'
Specifies that the argument is a 'signed char *' or 'unsigned char
*'.
This modifier was introduced in ISO C99.
'h'
Specifies that the argument is a 'short int *' or 'unsigned short
int *'.
'j'
Specifies that the argument is a 'intmax_t *' or 'uintmax_t *'.
This modifier was introduced in ISO C99.
'l'
Specifies that the argument is a 'long int *' or 'unsigned long int
*'. Two 'l' characters is like the 'L' modifier, below.
If used with '%c' or '%s' the corresponding parameter is considered
as a pointer to a wide character or wide character string
respectively. This use of 'l' was introduced in Amendment 1 to
ISO C90.
'll'
'L'
'q'
Specifies that the argument is a 'long long int *' or 'unsigned
long long int *'. (The 'long long' type is an extension supported
by the GNU C compiler. For systems that don't provide extra-long
integers, this is the same as 'long int'.)
The 'q' modifier is another name for the same thing, which comes
from 4.4 BSD; a 'long long int' is sometimes called a "quad" 'int'.
't'
Specifies that the argument is a 'ptrdiff_t *'.
This modifier was introduced in ISO C99.
'z'
Specifies that the argument is a 'size_t *'.
This modifier was introduced in ISO C99.
All of the '%e', '%f', '%g', '%E', and '%G' input conversions are
interchangeable. They all match an optionally signed floating point
number, in the same syntax as for the 'strtod' function ( Parsing
of Floats).
For the floating-point input conversions, the default argument type
is 'float *'. (This is different from the corresponding output
conversions, where the default type is 'double'; remember that 'float'
arguments to 'printf' are converted to 'double' by the default argument
promotions, but 'float *' arguments are not promoted to 'double *'.)
You can specify other sizes of float using these type modifiers:
'l'
Specifies that the argument is of type 'double *'.
'L'
Specifies that the argument is of type 'long double *'.
For all the above number parsing formats there is an additional
optional flag '''. When this flag is given the 'scanf' function expects
the number represented in the input string to be formatted according to
the grouping rules of the currently selected locale ( General
Numeric).
If the '"C"' or '"POSIX"' locale is selected there is no difference.
But for a locale which specifies values for the appropriate fields in
the locale the input must have the correct form in the input. Otherwise
the longest prefix with a correct form is processed.
Info Catalog
(libc.info.gz) Table of Input Conversions
(libc.info.gz) Formatted Input
(libc.info.gz) String Input Conversions
automatically generated by
info2html