ATOF(2)                                                   ATOF(2)

     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)

          uvlong 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

     Page 1                       Plan 9            (printed 12/21/24)

     ATOF(2)                                                   ATOF(2)

          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
          /sys/src/libc/port

     SEE ALSO
          fscanf(2)

     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.

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

     Page 2                       Plan 9            (printed 12/21/24)