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

小歆11年前单片机06188

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--;
}

相关文章

C中预编译详解

预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。 在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏...

C51单片机及C语言知识点必备秘籍

C51单片机及C语言知识点必备秘籍

C51单片机及C语言知识点必备秘籍2 `: }( _# B# m% p+ _6 t, B* k 5 W' z" b2 T. Z: s' m! Q" T ; s0 w2 E& a&nbs...

c-free 3.5.jpg

C-Free 针对C/C++初学者的集成化开发环境

C-Free是针对C/C++初学者的集成化开发环境 开发: C-Free开发工具: Borland C++ Builder 6.0 C-Free中使用的编译...

小歆STM32工程模板(基于ST3.5库文件)

建立工程的步骤:  1.新建工程到..\Project\RVMDK文件夹内; 2.选择芯片型号(STM32F103VE); 3.提示是否导入启动文件,点击否;...

[C语言]贪吃蛇源码

#define N 200 #include <graphics.h> #include <stdlib.h> #include <dos.h> #defi...

STM32 V3.5.0 工程模版

STM32 V3.5.0 工程模版

STM32_V3.5.0工程模版 MDK环境下利用STM32库V3.5创建工程的模板! 下载地址:STM32_V3.5.0工程模版(701.27 K...

发表评论    

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