/*atof函数:把字符串s转换为相应的双精度浮点数*/
#include <ctype.h>
double atof(char s[])
{
double val,power;
int i,sign;
for(i =0;isspace(s[i]);i++) /*isspace判断是否为空白符*/
;
sign = (s[i] == '-')? -1 : 1;
if(s[i] == '+' || s[i] == '-')
i++;
for(val = 0.0;isdigit(s[i]);i++) /*isdigit判断是否为数字*/
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;
}
#include <ctype.h>
double atof(char s[])
{
double val,power;
int i,sign;
for(i =0;isspace(s[i]);i++) /*isspace判断是否为空白符*/
;
sign = (s[i] == '-')? -1 : 1;
if(s[i] == '+' || s[i] == '-')
i++;
for(val = 0.0;isdigit(s[i]);i++) /*isdigit判断是否为数字*/
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;
}
/*下例程序是一个简单的计算器程序,该程序在每行中读取一个数
(数的前面可能有正负号),并对它们求和,在每次输入完成后
把这些数的累计总和打印出来*/
#include <stdio.h>
#define MAXLINE 100
main()
{
double sum,atof(char []);
char line[MAXLINE];
int getline(char line[],int max); /*此处getline函数,见前几例*/
sum=0; /*getline将行保存在line中,并返回该行的长度*/
while(getline(line MXLINE)>0)
printf(" %g ",sum+=atof(line));
return 0;
}
(数的前面可能有正负号),并对它们求和,在每次输入完成后
把这些数的累计总和打印出来*/
#include <stdio.h>
#define MAXLINE 100
main()
{
double sum,atof(char []);
char line[MAXLINE];
int getline(char line[],int max); /*此处getline函数,见前几例*/
sum=0; /*getline将行保存在line中,并返回该行的长度*/
while(getline(line MXLINE)>0)
printf(" %g ",sum+=atof(line));
return 0;
}