[通用8051核FLASH系列] 单片机使用sprintf和printf

[复制链接]
 楼主| pmp 发表于 2024-5-29 22:00 | 显示全部楼层 |阅读模式
sprintf
srpintf()函数的功能非常强大:效率比一些字符串操作函数要高;而且更具灵活性;可以将想要的结果输出到指定的字符串中,也可作为缓冲区,而printf只能输出到命令行上~
头文件:stdio.h
函数功能:格式化字符串,将格式化的数据写入字符串中。
函数原型:int sprintf(char *buffer, const char *format, [argument]…)
函数返回值:buffer指向的字符串的长度;

在51单片机中使用sprintf
sprintf(BUFF_HC,"Soke:%d,Someone ",(int)Value);

注意:这里一定要强转为int类型
原因:可能是8位的系统和32位的系统存储方式不一样,对其方式也不一样

printf
printf() 是 C 语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf() 申明于头文件 stdio.h。

在51单片机中使用printf作为串口输出
查看了keil的帮助文件里面的printf函数说明,原来printf函数最终是调用putchar函数来实现打印输出字符的。

//UART1 发送串口数据
void UART1_SendData(char dat)
{
     ES=0;           //关串口中断
     SBUF=dat;           
     while(TI!=1);   //等待发送成功
     TI=0;           //清除发送中断标志
     ES=1;           //开串口中断
}

//UART1 发送字符串
void UART1_SendString(char *s)
{
     while(*s)//检测字符串结束符
     {
         UART1_SendData(*s++);//发送当前字符
     }
}

//重写putchar函数
char putchar(char c)
{
     UART1_SendData(c);
     return c;
}
注:一定要关闭串口中断


chenjun89 发表于 2024-6-5 22:29 来自手机 | 显示全部楼层
我就是用格式化字符串函数实现printf的功能。
weifeng90 发表于 2024-6-6 07:53 来自手机 | 显示全部楼层
sprintf格式化字符串函数很好用
yangxiaor520 发表于 2024-6-9 16:59 来自手机 | 显示全部楼层
用sprintf函数可以实现printf函数的功能。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

pmp

186

主题

7784

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部