### 7.7 Input and Output Functions

Functions that perform input from a stdio stream, and functions that output to a stdio stream, of `mpf` numbers. Passing a `NULL` pointer for a stream argument to any of these functions will make them read from `stdin` and write to `stdout`, respectively.

When using any of these functions, it is a good idea to include `stdio.h` before `gmp.h`, since that will allow `gmp.h` to define prototypes for these functions.

See also Formatted Output and Formatted Input.

Function: size_t mpf_out_str (FILE *stream, int base, size_t n_digits, const mpf_t op)

  Print op to stream, as a string of digits. Return the number of bytes written, or if an error occurred, return 0.

  The mantissa is prefixed with an ‘`0.`’ and is in the given base, which may vary from 2 to 62 or from -2 to -36. An exponent is then printed, separated by an ‘`e`’, or if the base is greater than 10 then by an ‘`@`’. The exponent is always in decimal. The decimal point follows the current locale, on systems providing `localeconv`.

  For base in the range 2..36, digits and lower-case letters are used; for -2..-36, digits and upper-case letters are used; for 37..62, digits, upper-case letters, and lower-case letters (in that significance order) are used.

  Up to n_digits will be printed from the mantissa, except that no more digits than are accurately representable by op will be printed. n_digits can be 0 to select that accurate maximum.

Function: size_t mpf_inp_str (mpf_t rop, FILE *stream, int base)

  Read a string in base base from stream, and put the read float in rop. The string is of the form ‘`M@N`’ or, if the base is 10 or less, alternatively ‘`MeN`’. ‘`M`’ is the mantissa and ‘`N`’ is the exponent. The mantissa is always in the specified base. The exponent is either in the specified base or, if base is negative, in decimal. The decimal point expected is taken from the current locale, on systems providing `localeconv`.

  The argument base may be in the ranges 2 to 36, or -36 to -2. Negative values are used to specify that the exponent is in decimal.

  Unlike the corresponding `mpz` function, the base will not be determined from the leading characters of the string if base is 0. This is so that numbers like ‘`0.23`’ are not interpreted as octal.

  Return the number of bytes read, or if an error occurred, return 0.