atof.3 (3262B)
1 .TH ATOF 3 2 .SH NAME 3 atof, atoi, atol, atoll, charstod, strtod, strtol, strtoll, strtoul, strtoull \- convert text to numbers 4 .SH SYNOPSIS 5 .B #include <u.h> 6 .br 7 .B #include <libc.h> 8 .PP 9 .nf 10 .ta \w'\fLdouble 'u 11 .B 12 double atof(char *nptr) 13 .PP 14 .B 15 int atoi(char *nptr) 16 .PP 17 .B 18 long atol(char *nptr) 19 .PP 20 .B 21 vlong atoll(char *nptr) 22 .PP 23 .B 24 double charstod(int (*f)(void *), void *a) 25 .PP 26 .B 27 double strtod(char *nptr, char **rptr) 28 .PP 29 .B 30 long strtol(char *nptr, char **rptr, int base) 31 .PP 32 .B 33 vlong strtoll(char *nptr, char **rptr, int base) 34 .PP 35 .B 36 ulong strtoul(char *nptr, char **rptr, int base) 37 .PP 38 .B 39 vlong strtoull(char *nptr, char **rptr, int base) 40 .fi 41 .SH DESCRIPTION 42 .IR Atof , 43 .IR atoi , 44 .IR atol , 45 and 46 .I atoll 47 convert a string pointed to by 48 .I nptr 49 to floating, integer, long integer, and long long integer 50 .RB ( vlong ) 51 representation respectively. 52 The first unrecognized character ends the string. 53 Leading C escapes are understood, as in 54 .I strtol 55 with 56 .I base 57 zero (described below). 58 .PP 59 .I Atof 60 recognizes an optional string of tabs and spaces, 61 then an optional sign, then 62 a string of digits optionally containing a decimal 63 point, then an optional 64 .L e 65 or 66 .L E 67 followed 68 by an optionally signed integer. 69 .PP 70 .I Atoi 71 and 72 .I atol 73 recognize an optional string of tabs and spaces, 74 then an optional sign, then a string of 75 decimal digits. 76 .PP 77 .IR Strtod , 78 .IR strtol , 79 .IR strtoll , 80 .IR strtoul , 81 and 82 .I strtoull 83 behave similarly to 84 .I atof 85 and 86 .I atol 87 and, if 88 .I rptr 89 is not zero, set 90 .I *rptr 91 to point to the input character 92 immediately after the string converted. 93 .PP 94 .IR Strtol , 95 .IR strtoll , 96 .IR strtoul , 97 and 98 .IR strtoull 99 interpret the digit string in the specified 100 .IR base , 101 from 2 to 36, 102 each digit being less than the base. 103 Digits with value over 9 are represented by letters, 104 a-z or A-Z. 105 If 106 .I base 107 is 0, the input is interpreted as an integral constant in 108 the style of C (with no suffixed type indicators): 109 numbers are octal if they begin with 110 .LR 0 , 111 hexadecimal if they begin with 112 .L 0x 113 or 114 .LR 0X , 115 otherwise decimal. 116 .PP 117 .I Charstod 118 interprets floating point numbers in the manner of 119 .IR atof , 120 but gets successive characters by calling 121 .BR (*\fIf\fP)(a) . 122 The last call to 123 .I f 124 terminates the scan, so it must have returned a character that 125 is not a legal continuation of a number. 126 Therefore, it may be necessary to back up the input stream one character 127 after calling 128 .IR charstod . 129 .SH SOURCE 130 .B \*9/src/lib9 131 .SH SEE ALSO 132 .MR fscanf (3) 133 .SH DIAGNOSTICS 134 Zero is returned if the beginning of the input string is not 135 interpretable as a number; even in this case, 136 .I rptr 137 will be updated. 138 .br 139 These routines set 140 .IR errstr . 141 .SH BUGS 142 .I Atoi 143 and 144 .I atol 145 accept octal and hexadecimal numbers in the style of C, 146 contrary to the ANSI specification. 147 .PP 148 .IR Atof , 149 .IR strtod , 150 .IR strtol , 151 .IR strtoul , 152 .IR strtoll , 153 and 154 .IR strtoull 155 are not provided: 156 they are expected to be provided by the underlying system. 157 .PP 158 Because they are implemented in the fmt library, 159 .I charstod 160 and 161 .I strtod 162 are preprocessor macros defined as 163 .I fmtcharstod 164 and 165 .IR fmtstrtod . 166 .PP 167 To avoid name conflicts with the underlying system, 168 .IR atoi , 169 .IR atol , 170 and 171 .I atoll 172 are preprocessor macros defined as 173 .IR p9atoi , 174 .IR p9atol , 175 and 176 .IR p9atoll ; 177 see 178 .MR intro (3) .