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.