资源简介

通过可变参数函数实现printf()函数功能,可将其应用于单片机,ARM裸机等的串口输出中去,并且新增了[%b:实现二进制输出,原来printf函数不能实现的功能]。也可将其使用的液晶的字符类驱动中去。

资源截图

代码片段和文件信息

#include 
#include 
 

/*
可变参数实现printf
使用putchar()函数作为输出
思路:
通过遍历固定参数format从中提取出,可变参数类型
然后使用putchar()函数输出对应参数值
*/
/*
@ 使用递归用putchar()函数输出整数
@ 在函数void printf_demo4(const char *format ...)中调用
*/
void printf_int(int tmp)
{
if (tmp > 9)
{
printf_int(tmp / 10);
}
putchar(tmp % 10 + ‘0‘);
}
/*
@实现功能,输入十进制或者十六进制可以打印出二进制数据
@通过位操作,当高位不为0时开始进行输出
*/
void printf_binary(int tmp)
{
char flag = 0;
int  ret = 0;
char tmp_sizeof = sizeof(tmp);//先判断出输入数据是几位数据
for (int i = 0; i < tmp_sizeof * 8; i++)
{
if (tmp_sizeof == 4)
{
ret = 0x80000000 & tmp;
if (ret != 0)
{
putchar(1 + ‘0‘);
flag = 1;
}
else if ((flag == 1) && !ret)
{
putchar(0 + ‘0‘);
}

tmp <<= 1;
}
else if (tmp_sizeof == 2)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4426  2018-05-07 14:50  my_printf\my_printf.c

     文件       1146  2018-05-07 14:53  my_printf\my_printf.h

     目录          0  2018-05-07 14:54  my_printf

----------- ---------  ---------- -----  ----

                 5572                    3


评论

共有 条评论