![]() Chapter Contents |
![]() Previous |
![]() Next |
| atof |
| Portability: | ISO/ANSI C conforming, UNIX compatible |
| SYNOPSIS | |
| DESCRIPTION | |
| RETURN VALUE | |
| DIAGNOSTICS | |
| EXAMPLE | |
| RELATED FUNCTIONS | |
| SEE ALSO |
| SYNOPSIS |
#include <stdlib.h> double atof(const char *p);
| DESCRIPTION |
atof
converts the character string
p
to a double-precision,
floating-point number after skipping any leading white space (such as blanks,
tabs, and new-line characters). The conversion stops at the first unrecognized
character.
The argument string may contain a decimal point and
may be followed by an
e
or an
E
and a signed integer exponent. A leading minus sign indicates a
negative number. White space is not allowed between the minus sign and the
number or between the number and the exponent.
| RETURN VALUE |
atof
returns a value of type
double
. If no
initial segment of the string is a valid number, the return value is 0.
| DIAGNOSTICS |
No indication is returned to the program
to specify whether the string contains a valid number, so you should validate
the string before calling
atof
.
If the floating-point value is outside the range of
valid 370 floating-point numbers, ±
HUGE_VAL
is returned if the correct value is too large, or 0.0 if the correct
value is too close to 0.
| EXAMPLE |
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
main() {
char input[80];
int int_format;
long int_value;
double dbl_value;
puts("Enter a valid C numeric constant (without any suffixes)");
gets(input);
/* If there's a decimal point, it's a double. */
if (strchr(input, '.')) int_format = 0;
/* If it starts 0x, it's an integer. */
else if((input[0] == '0' && tolower(input[1]) == 'x') ||
((input[0] == '+' || input[0] == '-') &&
input[1] == '0' && tolower(input[2]) == 'x'))
int_format = 1;
/* If it has an E and isn't hex, it's a double. */
else if (strpbrk(input, "eE")) int_format = 0;
/* Doubles must have either "." or "e". */
else int_format = 1;
/* Convert to integer (errors ignored). */
if (int_format) {
int_value = strtol(input, NULL, 0);
printf("Your input appears to be the integer %d\n",
int_value);
}
/* Convert to double (errors ignored). */
else {
dbl_value = atof(input);
printf("Your input appears to be the double %.16g\n",
dbl_value);
}
exit(0);
}
| RELATED FUNCTIONS |
| SEE ALSO |
![]() Chapter Contents |
![]() Previous |
![]() Next |
![]() Top of Page |
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.