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)
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
Page 1 Plan 9 (printed 11/3/25)
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. Strtoul and strtoull do not recognize
signs.
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.
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 11/3/25)