xref: /inferno-os/man/10/atoi (revision 7cdb1d14cab5ad4eceb9edfc484ea272cf8a062d)
ATOI 10.2
NAME
atoi, atol, charstod, strtod, strtol, strtoul, strtoll - convert text to numbers
SYNOPSIS
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)

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

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

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

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

Strtod 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 .L e or .L E followed by an optionally signed integer.

Strtol , strtoul and strtoll 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 .LR 0 , hexadecimal if they begin with .L 0x or .LR 0X , otherwise decimal. Strtoul does not recognize signs.

Charstod interprets floating point numbers in the same syntax as strtod , but it gets successive characters by calling (*f)(\f2a\f5) . 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
/libkern/atol.c

/libkern/charstod.c

/libkern/strtod.c

/libkern/strtol.c

/libkern/strtoul.c

/libkern/utils.c

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.