前言
在嵌入式开发中经常需要将一个变量实时通过串口等协议传输并显示到LCD等显示屏上。但我们得到的大多数的底层库里面只留有显示字符串的接口。因此需要将变量转化为字符串。
sprintf()函数的用法
函数原型:
int sprintf(char *buffer, const char *format, [argument]...)
参数:
(1)buffer:是char类型的指针,指向写入的字符串指针;
(2)format:格式化字符串,即在程序中想要的格式;
(3)argument:可选参数,可以为任意类型的数据;可以不止一个参数
函数返回值:buffer指向的字符串的长度;
第二个参数format决定了数据最终以什么格式的字符串呈现。常用的有十进制%d, 十六进制%x,浮点型%f和%g。
第三个参数为可选参数,可以用n个变量,同时第二个参数format也要增加至n个。eg.
sprintf(txt, "%s%s", a, b);
可用来连接不同类型的变量转为字符串。
使用方法
直接代码演示:(其中注释均为说明)
#include <stdio.h>
int main()
{
int a = 0;
//float a = 0;
unsigned char strlong = 0;
unsigned char txt[256];
while(1)
{
printf("input a number: ");
scanf("%d", &a);
//scanf("%f", &a);
strlong = sprintf((char*)txt, "%d", a); //转十进制以字符串的形式保存到txt中 【1】
//strlong = sprintf((char*)txt, "%x", a); //转十六进制后以字符串的形式保存到txt中 【2】
//strlong = sprintf((char*)txt, "%f", a); //浮点型转字符串(小数点后补0到6位) 【3】
//strlong = sprintf((char*)txt, "%g", a); //浮点型转字符串(小数点后不补0) 【4】
printf("strlong = %d\n", strlong );
//printf("%s\n", txt);
for(int i = 0; i < strlong; i++)
{
printf("%c", txt[i]);
}
//使用for遍历输出的原因是可以看清变量转字符串后在数组中的存放方式。便于后续调用其高(4)位或低(4)位。也可直接用上一行的方式输出。
printf("\n\n");
}
}
运行结果
【1】. 转十进制以字符串的形式保存到txt中
【2】. 转十六进制后以字符串的形式保存到txt中,打印结果
【3】. 浮点型转字符串(小数点后补0到6位)
【4】. 浮点型转字符串(小数点后不补0)
【5】.连接不同类型的变量转为字符串
float b = 0;
int a = 0;
unsigned char strlong = 0;
unsigned char txt[256];
printf("input a number(a): ");
scanf("%d", &a);
printf("input a number(b): ");
scanf("%f", &b);
strlong = sprintf((char*)txt, "%d%f", a, b); //连接
printf("%s\n", txt);
输出: