double atof(char s[]) {
int i, sign;
double val, power;
for (i = 0; isspace(s[i]); ++i)
;
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-')
++i;
for (val = 0.0; isdigit(s[i]); ++i) {
val = 10.0 * val + (s[i] - '0');
}
if (s[i] == '.') {
++i;
}
for (power = 1.0; isdigit(s[i]); ++i) {
val = 10.0 * val + (s[i] - '0');
power *= 10.0;
}
return sign * val / power;
}
Uzupełnij fiunkcję atof tak, aby obsługiwała także "naukową" (wykładniczą) notację o postaci
123.45e-6
w której bezpośrednio po liczbie zmiennopozycyjnej może wystapi litera e lub E oraz wykładnik ewentualnie ze znakiem liczby.