打印
[通用8051核FLASH系列]

单片机使用sprintf和printf

[复制链接]
2298|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

182

主题

7490

帖子

7

粉丝