Back

#include<stdio.h>
#include<ctype.h>

#define  MAXLINE  100

double atof(char s[]);
int getline(char line[], int max);

int main()
{

double sum, atof(char []);
char line[MAXLINE];
int getline(char line[], int max);

sum=0;
while(getline(line,MAXLINE) > 0)
  printf("\t%g\n", sum+=atof(line));

return 0;
}

double atof(char s[])
{

double val, power;
int i, sign;
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;
  }

return (sign*val/power);

}

int getline(char line[], int max)
{
 int c,i;
  for(i=0; i<max-1 && (c=getchar())!=EOF && c!='\n'; ++i)
   line[i]=c;
 if(c=='\n') {
  line[i]=c;
  ++i;
  }
 line[i]='\0';
 return i;

}

Top