单片机中浮点数转字符数组的方法(sprintf 函数)

小歆12年前单片机07616

sprintf函数

函数功能:把格式化的数据写入某个字符串
头文件:stdio.h
函数原型:int sprintf( char *buffer, const char *format, [ argument] … ) ;
返回值:字符串长度(strlen)

例如:


uint8 buf[16];
double word_sou = 3.1415926;
n = sprintf(buf,"%f",word_sou);

结果:


buf={'3','.','1','4','1','5','9','2','6'};//字符数组
n=9;//buf数组中元素的个数

格式更多说明:

"
%a │读浮点值(仅适用于 C99)
%A │读浮点值(仅适用于 C99)
%c │读单字符
%d │读十进制整数
%i │读十进制、八进制、十六进制整数
%e │读浮点数
%E │读浮点数
%f │读浮点数
%F │读浮点数(仅适用于 C99)
%g │读浮点数
%G │读浮点数
%o │读八进制数
%s │读字符串
%x │读十六进制数
%X │读十六进制数
%p │读指针值
%n │至此已读入值的等价字符数
%u │读无符号十进制整数
%% │读 % 符号(百分号)

PS:有些时候%g会出错,所以最好是用%f;并且可以使用下面这段程序来达到%g的效果!

//定义变量
uint8 n,i;
uint8 word_str[16];
double word_sou = 3.14;

//浮点数转字符串
n = sprintf(word_str,"%f",word_sou);
i = n; //记录字符数组元素的个数

//消除结果后多余的“0”
while(word_str[--i] == '0')
{
word_str[i] = '\0';
}

//消除结果后多余的“.”
if(word_str[i] == '.')
{
word_str[i] = '\0';
i--;
}

相关文章

关于AutoCAD经常弹出安装窗口的解决办法

前言 先说说原因吧,网传是因为AutoCAD2007简体中文版的安装包中嵌入了某病毒程序,其关键库是dfst.dll文件,目前各大杀毒软件基本都能查出来,杀毒软件删除dfst.dll...

VS 2017 Git failed with a fatal error的解决方案

VS 2017 Git failed with a fatal error的解决方案

问题现象这几天用刚装的VS2017写了个程序,在提交推送到Github过程中提示了“Git failed with a fatal error”错误,输出窗口的提示如下图: 解决方案经过一番折腾...

VB模拟POST网页上传文件模块【无控件】

VB模拟POST网页上传文件模块【无控件】

介绍 已经集成mod模块,使用的时候直接调用FileUpload函数就可以了。程序是使用抓包软件将上传过程截取下来,通过post模拟上传头数据,再把文件转换为二进制上传到网站上的。...

STM32基本开发流程(以GPIO为例)

初学stm32,在此总结一下stm32的基本开发流程,就当总结规律方便以后进一步学习;本文所有内容都是基于ST库3.5版本的个人见解! 时钟部分 个人理解,为了降低功耗s...

【VB源码】LOL昵称查询QQ号工具V1.0

【VB源码】LOL昵称查询QQ号工具V1.0

名称:LOL昵称查询QQ号工具V1.0 作者:小歆 说明:通过腾讯的游戏人生来获取的... 源码下载: 【VB源码】LOL昵称查询QQ号工具.rar 程序下载...

Discuz附件下载权限绕过工具.png

[小歆][Discuz附件下载权限绕过工具][V1.1][2014.03.13]

Discuz附件下载权限绕过工具V1.1 本软件利用Discuz论坛的漏洞来下载论坛的附件。 【Discuz3.X的有部分好像已经失效了,自测,我刚刚测试了一个3.X论坛还是...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。