返回非整型值的函数

/*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 <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("\t%g\n",sum+=atof(line));
 return 0;
}
 
posted @ 2019-11-17 11:33  烟火流沙  阅读(211)  评论(0编辑  收藏  举报