(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