ATOF(3)                                                   ATOF(3)

     NAME
          atof, atoi, atol, atoll, charstod, strtod, strtol, strtoll,
          strtoul, strtoull - convert text to numbers

     SYNOPSIS
          #include <u.h>
          #include <libc.h>

          double atof(char *nptr)

          int    atoi(char *nptr)

          long   atol(char *nptr)

          vlong  atoll(char *nptr)

          double charstod(int (*f)(void *), void *a)

          double strtod(char *nptr, char **rptr)

          long   strtol(char *nptr, char **rptr, int base)

          vlong  strtoll(char *nptr, char **rptr, int base)

          ulong  strtoul(char *nptr, char **rptr, int base)

          vlong  strtoull(char *nptr, char **rptr, int base)

     DESCRIPTION
          Atof, atoi, atol, and atoll convert a string pointed to by
          nptr to floating, integer, long integer, and long long inte-
          ger (vlong) representation respectively.  The first unrecog-
          nized character ends the string.  Leading C escapes are
          understood, as in strtol with base zero (described below).

          Atof recognizes an optional string of tabs and spaces, then
          an optional sign, then a string of digits optionally con-
          taining a decimal point, then an optional `e' or `E' fol-
          lowed by an optionally signed integer.

          Atoi and atol recognize an optional string of tabs and
          spaces, then an optional sign, then a string of decimal dig-
          its.

          Strtod, strtol, strtoll, strtoul, and strtoull behave simi-
          larly to atof and atol and, if rptr is not zero, set *rptr
          to point to the input character immediately after the string
          converted.

          Strtol, strtoll, strtoul, and strtoull interpret the digit

     ATOF(3)                                                   ATOF(3)

          string in the specified base, from 2 to 36, each digit being
          less than the base.  Digits with value over 9 are repre-
          sented by letters, a-z or A-Z.  If base is 0, the input is
          interpreted as an integral constant in the style of C (with
          no suffixed type indicators): numbers are octal if they
          begin with `0', hexadecimal if they begin with `0x' or `0X',
          otherwise decimal.

          Charstod interprets floating point numbers in the manner of
          atof, but gets successive characters by calling (*f)(a).
          The last call to f terminates the scan, so it must have
          returned a character that is not a legal continuation of a
          number.  Therefore, it may be necessary to back up the input
          stream one character after calling charstod.

     SOURCE
          /src/lib9

     SEE ALSO
          fscanf(3)

     DIAGNOSTICS
          Zero is returned if the beginning of the input string is not
          interpretable as a number; even in this case, rptr will be
          updated.
          These routines set errstr.

     BUGS
          Atoi and atol accept octal and hexadecimal numbers in the
          style of C, contrary to the ANSI specification.

          Atof, strtod, strtol, strtoul, strtoll, and strtoull are not
          provided: they are expected to be provided by the underlying
          system.

          Because they are implemented in the fmt library, charstod
          and strtod are preprocessor macros defined as fmtcharstod
          and fmtstrtod.

          To avoid name conflicts with the underlying system, atoi,
          atol, and atoll are preprocessor macros defined as p9atoi,
          p9atol, and p9atoll; see intro(3).