ATOF(2)                                                   ATOF(2)

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

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

          double atof(char *nptr)

          int    atoi(char *nptr)

          long   atol(char *nptr)

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

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

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

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

          /* Alef only */

          int    strtoi(byte *nptr, byte **rptr, int base)

          uint   strtoui(byte *nptr, byte **rptr, int base)

          float  strtof(byte *nptr, byte **rptr);

     DESCRIPTION
          Atof, atoi, and atol convert a string pointed to by nptr to
          floating, integer, and long integer representation respec-
          tively.  The first unrecognized character ends the string.
          Leading C escapes are understood, as in strtol with base
          zero.

          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, and strtoul behave similarly to atof and
          atol and, if rptr is not zero, set *rptr to point to the
          input character immediately after the string converted.

     Page 1                       Plan 9             (printed 4/23/24)

     ATOF(2)                                                   ATOF(2)

          Strtol and strtoul interpret the digit string in the speci-
          fied base, from 2 to 36, each digit being less than the
          base.  Digits with value over 9 are represented 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', hex-
          adecimal if they begin with `0x' or `0X', otherwise decimal.
          Strtoul does not recognize signs.

          Charstod interprets floating point numbers like atof, but it
          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.

        Alef
          The routines strtol and strtoul are renamed strtoi and
          strtoui and return type int and uint.  There is no charstod
          or atof. Instead, strtof is like a floating-point base 10
          strtoi.

     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.
          These routines set errstr.

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

     Page 2                       Plan 9             (printed 4/23/24)