Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (2) — Plan9 4th Edition

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fscanf(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>

doubleatof(char ∗nptr)

intatoi(char ∗nptr)

longatol(char ∗nptr)

vlongatoll(char ∗nptr)

doublecharstod(int (∗f)(void ∗), void ∗a)

doublestrtod(char ∗nptr, char ∗∗rptr)

longstrtol(char ∗nptr, char ∗∗rptr, int base)

vlongstrtoll(char ∗nptr, char ∗∗rptr, int base)

ulongstrtoul(char ∗nptr, char ∗∗rptr, int base)

vlongstrtoull(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 ­e or ­E 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 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. 
These routines set errstr.

BUGS

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

Plan 9  —  March 02, 2002

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026