相关知识:

头文件:#include <stdlib.h>

函数 atof() 用于将字符串转换为双精度浮点数(double),其原型为:
double atof (const char* str);

atof() 的名字来源于 ascii to floating point numbers 的缩写,它会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数str 字符串可包含正负号、小数点或E(e)来表示指数部分,如123. 456 或123e-2。

【返回值】返回转换后的浮点数;如果字符串 str 不能被转换为 double,那么返回 0.0。

程序如下:

#include <iostream>using namespace std;double myatof(const char* str)
{double result = 0.0;double d = 10.0;int count = 0;if(str == NULL)return 0;while(*str == ' ' || *str == '\t')str++;bool flag = false;while(*str == '-')  //记录数字正负{flag = true;str++;}if(!(*str >= '0' && *str <= '9'))  //非数字退出return result;while(*str >= '0' && *str <= '9')  //计算小数点前面的部分{result = result*10 + (*str - '0');str++;}if(*str == '.')  //小数点str++;while(*str >= '0' && *str <= '9')  //小数点后面的部分{result = result + (*str - '0')/d;d*=10.0;str++;}result = result * (flag ? -1.0 : 1.0);if(*str == 'e' || *str == 'E')  //科学计数法{flag = (*++str == '-') ? true : false;if(*str == '+' || *str == '-')str++;while(*str >= '0' && *str <= '9'){count = count*10 + (*str - '0');str++;}if(flag == true)            //为-{while(count > 0){result = result/10;count--;}}if(flag == false)  //为+{while(count > 0){result = result*10;count--;}}}return result;
}int main()
{char *s1 = "123.456hfid";char *s2 = "-12.45de";char *s3 = "ds24.67";char *s4 = "12.34e5ji";char *s5 = "13.56e-2hu";printf("result = %f\n",myatof(s1));printf("result = %f\n",myatof(s2));printf("result = %f\n",myatof(s3));printf("result = %f\n",myatof(s4));printf("result = %f\n",myatof(s5));return 0;
}

运行结果如图所示:

通过编程,实现atof函数相关推荐

  1. atoll找不到标识符c语言,C/C++编程笔记:C++中的atol,atoll和atof函数

    1.atol() 此函数将作为参数传递给函数调用的C类型字符串转换为长整数.它解析C字符串str,将其内容解释为整数,并作为long int类型的值返回.该函数丢弃出现在字符串开头的空白字符,直到找到 ...

  2. C/C++ atof函数 - C语言零基础入门教程

    目录 一.atof 函数简介 二.atof 函数函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.atof 函数简介 在 st ...

  3. C语言网络编程:listen函数详解

    文章目录 前言 函数描述 代码实例 TCP服务器为什么调用listen 前言 根据TCP编程模型中我们可以看到之前的socket和bind接口是tcp服务器在为接收客户端的链接做准备,保证tcp的面向 ...

  4. Linux编程下open()函数的用法

    Linux编程下open()函数的用法 open(打开文件)  相关函数:  read,write,fcntl,close,link,stat,umask,unlink,fopen 表头文件 : #i ...

  5. 高阶函数||编程范式: 命令式编程/声明式编程 || 编程范式: 面向对象编程(第一公民:对象)/函数式编程(第一公民:函数)

    编程范式: 命令式编程/声明式编程 编程范式: 面向对象编程(第一公民:对象)/函数式编程(第一公民:函数) 高阶函数 filter/map/reduce filter中的回调函数有一个要求: 必须返 ...

  6. SOCKET编程中,select()函数的作用

    SOCKET编程中,select()函数的作用Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect.accep ...

  7. 【Linux系统编程】vfork() 函数详解

    00. 目录 文章目录 00. 目录 01. vfork函数 02. fork和vfork区别 03. 父子进程地址空间 04. 附录 01. vfork函数 函数分析 #include <sy ...

  8. 【Linux系统编程】fork()函数详解

    00. 目录 文章目录 00. 目录 01. 进程创建函数 02. 父子进程结构 03. 父子进程地址空间 04. 附录 01. 进程创建函数 #include <sys/types.h> ...

  9. 编程实现strcpy函数_C编程中的strcpy()

    编程实现strcpy函数 We earlier learned about strings in C programming in our Strings in C tutorial. Today, ...

  10. 浅谈windows 编程中SendMessage函数的妙用!!!

    windows编程中SendMessage函数是非常重要的,而且这个对于理解windows的消息机制也很重要.本文用代码的方式实现了一些功能,借以说明此函数之妙用.说明不当之处,希望批评指正,谢谢! ...

最新文章

  1. db2动态查看备份进度
  2. 天天向上 专访Data Domain创始人李凯
  3. 关于运算符operator重载出错解决方法
  4. 脐带血要不要保存?看了你就明白!
  5. Flask实战2问答平台--导航条
  6. [机械]“重工业面临两大危机”——向文波(三一重工股份有限公司执行总裁)
  7. 计算机屏幕亮度调到多少合适,电脑屏幕的亮度和对比度调到多少比较合适,对眼睛伤害最小?有哪位高手了解?...
  8. nth-child和蝉原则实现的奇妙随机效果(译)
  9. 3. 设计模式之创建模式
  10. as4配置本地gradle_Gradle和Maven的区别
  11. shutdown 命令参数介绍
  12. Hadoop2.2.0中HDFS的高可用性实现原理
  13. [转]摄影入门导购-基于预算的器材解决方案
  14. ACM32 MCU元器件AD封装库
  15. 高一计算机网络技术应用计划,高一信息技术课教学计划
  16. 桃李春风一杯酒,江湖夜雨十年灯。—第三十五天
  17. Google Maps谷歌地图车辆位置描点、位置详情查看
  18. 云原生 - 负载均衡(SLB)多可用区
  19. 如何获取百度地图API
  20. matlab 如何axis,在matlab中axis是什么意思,matlab中axis的用法

热门文章

  1. 关于公网ip映射到私网ip
  2. Python 数据存储读取,6千字搞定各种方法
  3. 全球十大电视制造商计划在2021年购买2亿块液晶电视面板
  4. 项目执行差,你应该如何推进解决?(万千项目)
  5. bat小工具之批量文件排序命名
  6. 如何建一个能与大家分享的旅行相册
  7. 「未来新生代」专栏:优客工场的逆商
  8. nginx配置图片跨域代理
  9. java实现中国象棋4:悔棋及重新开始
  10. ActionSheet样式UIAlertController的正确使用