COHERENT manpages
This page displays the COHERENT manpage for strtod() [Convert string to floating-point number].
List of available manpages
Index
strtod() -- General Function (libc)
Convert string to floating-point number
#include <stdlib.h>
double strtod(string, tailptr)
char *string; char **tailptr;
strtod() converts the number given in string to a double-precision
floating-point number and returns its value. It is a more general version
of the function atof(). strtod() also stores a pointer to the first
character following the number through tailptr, provided tailptr is not
NULL.
strtod() parses the input string into three portions: beginning, subject
sequence, and tail.
The beginning consists of zero or more white-space characters that begin
the string.
The subject sequence is the portion of the input string that strtod()
converts into a floating-point number. It consists of an optional sign
character, a nonempty sequence of decimal digits optionally including a
decimal-point character, and an optional exponent. If present, the
exponent consists of either `e' or `E' followed by an optional sign and a
nonempty sequence of decimal digits. strtod() reads characters until it
encounters either a second decimal-point character or exponent marker, or
any other non-numeral.
The tail continues from the end of the subject sequence to the null
character that ends the string.
strtod() ignores the beginning portion of the string. It converts the
subject sequence to a double-precision number. Finally, it sets the
pointer pointed to by tailptr to the address of the first character of the
string's tail.
strtod() returns the double generated from the subject sequence. If no
subject sequence could be recognized, it returns zero and stores the
initial value of string through tailptr. If the number represented by the
subject sequence is too large or too small to fit into a double, then
strtod() sets the global constant errno to ERANGE and returns HUGE_VAL or
zero, respectively. If, however, the number given in the subject sequence
has more digits to the right of the decimal point than can be encoded
within an IEEE double (which has a fraction of 53 bits), strtod trims the
excess digits before it converts the string.
Example
The following gives an example for strtod().
#include <stdlib.h>
main()
{
static char st[] = " 123.4 567.8";
char *head, *tail;
for (head = st;; head = tail) {
double amt = strtod(head, &tail);
/* No token found is end of string */
if (head == tail)
break;
printf("%f\n", amt);
}
exit(EXIT_SUCCESS);
}
See Also
atof(),
double,
errno,
libc,
limits.h,
stdlib.h,
strtol(),
strtoul()
ANSI Standard, §7.10.1.4
Notes
strtod() ignores initial white space in the string pointed to by string;
white space is defined as being all characters so recognized by the
function isspace().






