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 integer (vlong) representation respectively. The first unrecognized 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 containing a decimal point, then an optional or followed 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 digits.

Strtod, strtol, strtoll, strtoul, and strtoull 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.

Strtol, strtoll, strtoul, and strtoull interpret the digit string in the specified 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 hexadecimal if they begin with or 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)).