//编写函数实现库函数atof
#include <stdio.h>
#include <assert.h>
#include <ctype.h>
#include <math.h>
double calculate(const char *src, int flag)
{
double num = 0.0;
int n = 0;
int count = 0;
while (*src)
{
if ((*src >= '0') && (*src <= '9'))//推断输⼊入是否为⾮非数组字符
{
num = num * 10 + (*src - '0');
src++;
if (n)
{
count++;
}
}
else if (*src == '.')
{
n = 1;
src++;
}
else
{
num = 0;
break;
}
}
if (n)
{
num = num / powl(10,count);
}
return flag * num;
}
double str_to_int(const char *str)
{
double num = 0.0;
int flag = 1;
if (str != NULL && *str != '\0')
{
while (isspace(*str))
{
str++;
}
if (*str == '+')
str++;
else if (*str == '-')
{
str++;
flag = -1;
}
if (*str != '\0')
{
num = calculate(str, flag);
}
}
return num;
}
int main()
{
printf("%f\n", str_to_int(" +23.45"));
printf("%f\n", str_to_int(" -2.345"));
printf("%f\n", str_to_int("+234.5"));
printf("%f\n", str_to_int("-2345.44"));
printf("%f\n", str_to_int("2345"));
printf("%f\n", str_to_int("-1111.11"));
printf("%f\n", str_to_int(""));
printf("%f\n", str_to_int("123ab"));
return 0;
}

最新文章

  1. [NHibernate]关联映射
  2. 使用FastJSON,将对象或数组和JSON串互转
  3. MongoDB 3.0.6 安装 增删改查
  4. BlackJack Strategy
  5. android开发 BaseAdapter中getView()里的3个参数是什么意思
  6. 七牛云覆盖上传 php
  7. wikioi 1154 能量项链 (2006年NOIP全国联赛提高组)
  8. sql获取表字段名、描述和类型
  9. 寒假了,想深入学习c++
  10. 纯真IP数据库格式详解
  11. 基于335X平台的UBOOT中交换芯片驱动移植
  12. CentOS内网机器利用iptables共享公网IP上网
  13. PHP内置的预定义常量大全
  14. css - 兼容适配坑点总结(。。。)
  15. ubuntu各类问题笔记
  16. poj3352 Road Construction &amp; poj3177 Redundant Paths (边双连通分量)题解
  17. SpringBoot相知
  18. xcode 4.6 破解及真机调试
  19. Angular: Can&#39;t bind to &#39;ngModel&#39; since it isn&#39;t a known property of &#39;input&#39;问题解决
  20. ajax的post请求方式

热门文章

  1. Linux 压力测试及内存检测
  2. HDU_3172_带权并查集
  3. MySql(四)Select条件查询
  4. CAD把自定义实体,变成普通实体(com接口VB语言)
  5. 浅谈:nodejs在cmd提示不是内部或外部命令
  6. zip相关知识梳理(一)
  7. 洛谷—— P1450 [HAOI2008]硬币购物
  8. [luogu3067 USACO12OPEN] 平衡的奶牛群
  9. Servlet过滤器的使用
  10. CCF201612-2 工资计算 java(100分)