写了一个将字符串转换为浮点型的函数,用于上位机与单片机的数据传输。该函数只需传入一个字符串数组(指针)与一个用于存放转换数据的double类型的数组,即可完成数据的转换。该函数可以输入任意长度的字符串(包含任意个数的浮点数)并且对任意浮点数都有效(无论正负与位数多少),只需在每个浮点数之间用逗号隔开,并且在结尾处加上分号结束。

以下是代码:

1、声明

//参数的含义:*string:包含数字信息的字符串,数字之间需要用逗号隔开,结尾为分号,如:11.2,-23.6,63.5;
//*data:储存转换后数据的数组.
void string_to_float(char *string, double *data);

2、函数

#include "math.h"void string_to_float(char *string, double *data)
{unsigned int i=0,j=0,k=0;unsigned char flag=0;             //判断正负号的标志unsigned char flag_dot=1;    //判断小数点的标志double num=0;                        //临时存储计算结果的变量for(i=0;*(string+i)!=';';i++) //循环直到字符串结尾{if(*(string+i)>='0'&&*(string+i)<='9'&&flag_dot==1)  //如果当前字符为数字且在小数点之前{if(j==0) num = num*pow(10,j)+(double)(*(string+i)-'0');     //运算并存储中间计算结果else     num = num*pow(10,1)+(double)(*(string+i)-'0');j++;}else if(*(string+i)>='0'&&*(string+i)<='9'&&flag_dot==0) //如果当前字符为数字且在小数点之后{num = num+(double)(*(string+i)-'0')*pow(0.1,j+1);     //运算并存储中间计算结果j++;}else if(*(string+i)=='.')                               //读到了小数点则将对应标志位数值改变{flag_dot=0;j=0;}else if(*(string+i)=='-')                              //读到减号同样改变对应标志位的值{flag = 1;}else if(*(string+i)==',')                             //读完一个数据,重置标志位,记录最终计算结果{*(data+k) = num*pow(-1,flag);flag = 0;flag_dot=1;j=0;k++;num = 0;}}*(data+k) = num*pow(-1,flag);                            //补上最后一个数
}

该函数完全匹配正点原子的串口接收代码,只需要将存储接收数据的数组指针USART_RX_BUF传入函数即可。代码如下

     if(USART_RX_STA&0x8000){    if (USART_RX_BUF[0]=='M'){string_to_float(USART_RX_BUF, data);
printf("%f,%f,%f,%f,%f,%f;\r\n",data[0],data[1],data[2],data[3],data[4],data[5]);USART_RX_STA=0;}}

这里的if (USART_RX_BUF[0]=='M')只是为了判断字符串数据帧的头部,不要也可,而且在字符串前面添加想要的数据头也不会影响计算结果,运行结果如下:

直接输入字符串也是一样的

string_to_float("-3.258,64.211,-118.38,-35.233,114503.258211,-2511235.3878;", data);
printf("%f,%f,%f,%f,%f,%f;\r\n",data[0],data[1],data[2],data[3],data[4],data[5]);

相关的头文件与.c文件也上传了,审核中。

c语言 字符串转浮点型函数相关推荐

  1. C.【转】C语言字符串与数字相互转换

    1.gcvt 把浮点数转成字符串 - CSDN博客.html(https://blog.csdn.net/dxuehui/article/details/52791412) 1.1. 函数名: gcv ...

  2. c语言数字转化为字母表,c语言字符串 数字转换函数大全

    转载:c语言字符串 数字转换函数大全 字符串数字转换到底什么意思呢: 字符串和数字的编码不一样,字符串是按照国际标准ASCII码表进行编码,每个数字都是一个8位的ASCII码(也就是一个字节大小):而 ...

  3. c语言中的字符串结束标志,c语言字符串结束标志是什么_后端开发

    c语言如何求余数_后端开发 在C语言中可以直接使用双目运算符"%"求余数,其语法是"a%b",其中两个参数"a.b"必须为整形,不能为浮点型 ...

  4. C语言字符串处理的库函数

    使用C语言字符串处理的库函数,务必包含头文件string.h,即#include <string.h>       1. 比较字符串大小函数        1) 忽略大小写---strca ...

  5. c语言作业 字符串替换,C语言字符串替换。解决方法

    当前位置:我的异常网» C语言 » C语言字符串替换.解决方法 C语言字符串替换.解决方法 www.myexceptions.net  网友分享于:2015-04-14  浏览:0次 C语言字符串替换 ...

  6. 字符串基本操作 c语言,数据结构C语言字符串的基本操作.doc

    数据结构C语言字符串的基本操作 串的基本操作 #include #include #include #define m 100 typedef struct{ char ch[m]; int leng ...

  7. c语言字符串文库总结,C语言字符串.ppt

    C语言字符串.ppt ACM程序设计,福州大学至诚学院 冯新,第四讲,字符串处理,常用函数介绍,复制,char* strcpy char *s1, const char *s2; 将字符串s2复制到s ...

  8. c语言中的字符串总是以,C语言字符串的结束标志是什么?

    多级反馈队列调度算法详解 通常在使用多级队列调度算法时,进程进入系统时被永久地分配到某个队列.例如,如果前台和后台进程分别具有单独队列,那么进程并不从一个队列移到另一个队列,这是因为进程不会改变前台或 ...

  9. C语言字符串中最后一个单词的长度的算法(附完整源码)

    C语言字符串中最后一个单词的长度的算法 C语言字符串中最后一个单词的长度的算法完整源码(定义,实现,main函数测试) C语言字符串中最后一个单词的长度的算法完整源码(定义,实现,main函数测试) ...

  10. C语言字符串是否为pallindrome排列的算法(附完整源码)

    C语言字符串是否为pallindrome排列的算法 C语言字符串是否为pallindrome排列的算法完整源码(定义,实现,main函数测试) C语言字符串是否为pallindrome排列的算法完整源 ...

最新文章

  1. 整数转换为罗马数字 Integer to Roman
  2. pytest框架安装(MacOS)
  3. socket sock inet_sock 等关系
  4. Drop Down ComboBox
  5. boost::geometry::srs::spar用法的测试程序
  6. app显示服务器借口错误,hbuider 运行 uni-app 电脑端安卓模拟器接口请求错误
  7. python控制鼠标_如何用python实现真实的鼠标移动?
  8. matlab可达矩阵 结果,matlab求可达矩阵
  9. a*算法流程图_B端产品如何画好流程图?
  10. 给定一个9位数字的ISBN,求其校验位
  11. 汉字,五笔,拼音的转换
  12. MySQL Oracle默认排序_PostgreSQL、MySQL、Oracle,查询的默认排序是怎样的?
  13. Jupyter notebook的主题和字体美化
  14. 关于Html class id 命名规范
  15. 【电子电路计算公式】 导线流过电流计算工具,我已经做成一个小工具了(源代码)
  16. 红帽认证工程师(RHCE)的发展前景
  17. git pull 与 git push 的区别
  18. com.mysql.jdbc.exceptions.MySQLSyntaxErrorException
  19. 利用python快速转换GenBank和RefSeq的染色体号
  20. 考研作文重点框架、句子、词汇总结

热门文章

  1. 检测UDP端口是否畅通方法
  2. Hamcrest 断言
  3. 植物大战僵尸Scratch
  4. 开闭原则应用-书店打折Java代码实现
  5. 没有什么能难倒程序员,教你如何下载付费歌曲
  6. 关闭TOMCAT日志的三个方法
  7. python通信工程定额_通信工程2008版定额和2017版定额简单对比
  8. 当当网图书爬虫与数据分析
  9. CSDN-markdown编辑器语法——背景色
  10. 对linux信号量的理解以及实现