函数如何优化

匚匚 2010-03-31 05:13:08
#include <stdio.h>
#include <math.h>
#include <ctype.h>
double atof_zw(const char *);//此函数的优化问题
int main(void)
{
char a[18];
while(8)
{
printf("请输入一个要转换为整数的字符串:");
fflush(stdin);
fgets(a,18,stdin);
printf("%.13lf\n",atof_zw(a));
}
return 0;
}
double atof_zhw(const char *s)
{
double val=0.0;
int i,sig,n=1;
for(i=0;isspace(s[i]);i++);
sig=(s[i]=='-')?-1:1;
if(s[i]=='-'||s[i]=='+')
i++;
for(;isdigit(s[i]);i++)
val=val*10.0+(s[i]-'0');
if(s[i]=='.')
{
for(i++;isdigit(s[i]);i++)
{
val=val*10.0+(s[i]-'0');
n*=10;
}
val/=n*sig;
}
if(s[i]=='e'||s[i]=='E')
{
if((s[++i]=='-')||(s[i]=='+'))
{
sig=(s[i]=='-')?-1:1;
i++;
}
for(n=0;isdigit(s[i]);i++)
n=n*10+(s[i]-'0');
val*=pow(10.0,sig*n);
}
return val;
}
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
匚匚 2010-03-31
  • 打赏
  • 举报
回复
请问while( ::isspace(*pStr) )中的::是什么意思?
[Quote=引用 2 楼 chenyu2202863 的回复:]
http://blog.csdn.net/chenyu2202863/archive/2010/01/12/5180299.aspx
[/Quote]
匚匚 2010-03-31
  • 打赏
  • 举报
回复
优化之二:printf("请输入一个要转换为整数的字符串:");
改为:puts("请输入一个要转换为DOUBLE值的字符串:");
匚匚 2010-03-31
  • 打赏
  • 举报
回复
优化之一,atof_zhw改为atof_zw,谢谢
[Quote=引用 3 楼 jbz001 的回复:]
你的代码写的有问题
double atof_zhw(const char *s)右边的是个中文括号
atof_zw不知道是个什么东西
[/Quote]
jbz001 2010-03-31
  • 打赏
  • 举报
回复
你的代码写的有问题
double atof_zhw(const char *s)右边的是个中文括号
atof_zw不知道是个什么东西
chenyu2202863 2010-03-31
  • 打赏
  • 举报
回复
http://blog.csdn.net/chenyu2202863/archive/2010/01/12/5180299.aspx
匚匚 2010-03-31
  • 打赏
  • 举报
回复
暗示:这个可以优化

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧