/* atof - konverzija niske karaktera s u realni broj */
#include <stdio.h>
#include <ctype.h>

double atof(char s[]) {
  double value, power;
  int i, sign;

  /* preskacemo pocetne beline */
  for (i=0; isspace(s[i]); i++)
    ;
  
  /* odredjujemo znak broja */
  sign = (s[i] == '-') ? -1 : +1;
  if (s[i] == '+' || s[i] == '-')
    i++;

  /* celobrojni deo */
  for (value = 0.0; isdigit(s[i]); i++)
    value = 10.0 * value + (s[i] - '0');
  
  /* preskacemo decimalnu tacku */
  if (s[i] == '.')
    i++;

  /* razlomljeni deo */
  for(power=1.0; isdigit(s[i]); i++) {
    value = 10.0 * value + (s[i] - '0');
    power *= 10.0;
  }
  
  /* izracunavamo i vracamo krajnji rezultat */
  return sign * value / power;
}

int main() {
  char s[] = "-123.456";
  printf("Vrednost niske %s je %f\n", s, atof(s));
  return 0;
}