相关知识:

头文件:#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. (OCR论文)Mask TextSpotter V3机翻
  2. 代码:android崩溃日志收集和处理
  3. javascript之执行上下文堆栈
  4. 集成学习-Boosting集成学习算法GBDT
  5. pytorch Tensor.backward
  6. mysql数据库实例
  7. 记忆化搜索--poj 1597 Function Run Fun
  8. JS 监听绑定和取消事件
  9. f2fs文件系统的页缓存
  10. python三阶魔方_三阶魔方7步还原法详解 简单
  11. 阻滞增长模型求解_阻滞增长模型
  12. /admin/login.php,app/admin/controller/Login.php · 静水流深/wotuoquan - Gitee.com
  13. 春分时节,迎一场春暖花开
  14. matlab输出以下图形,输出高品质MATLAB图形的方法与技巧_陈丽安.pdf
  15. 51单片机8255扩展c语言,51单片机8255A扩展IO口
  16. C# Winfrom Excel表格导出 Aspose.Cells超简单方式
  17. 学习笔记 | 美团后台笔试+一面+二面
  18. Kafka Confluent 简介
  19. 从0开始学Unity做SLG系列(发布篇)
  20. myrio与fpga编程_LabVIEW-myRIO

热门文章

  1. 一枚app图标的设计文化(译文)
  2. Java中类和对象的关系
  3. python基础语法元素笔记_Jupyter笔记-Python语法基础(U.1)
  4. 5、编写自动化测试脚本
  5. 两个div放在同一行
  6. 凸透镜(普通的相机)概念模型及参数详解
  7. AttributeError: module ‘platform‘ has no attribute ‘linux_distribution‘
  8. 免费拥有个性化的头像 - Multiavatar
  9. 华为巅峰之作鸿蒙,华为巅峰之作:120Hz流体屏+麒麟990+鸿蒙系统 这才是熟悉的华为...
  10. Fiddler抓包手机连不上网