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.