制作类似printf 的打印函数

  1. 动机:
    在我们的实际项目中,有时候,往往需要做一个 类似于printf 这样的标准打印函数,来输出不定参数到我们指定的串口上,下面记述制作过程:
    首先,我之所以会这么做,是因为我也不知道输出到串口的字符有多少,而且也希望向 printf("%d, %s, %c\n", a, buf, b); 这样的形式传递我的变量值,那么上代码(C语言):
1 #include <stdarg.h>
2 int div_printf(const char *pcFormat, ...)
3 {
4     va_list args;
5     int len;
6     char buf[1024] = {0};
7
8     va_start(args, pcFormat);
9     len = vsnprintf(buf, sizeof(buf), pcFormat, args);
10    va_end(args);
11
12    send_uart1(buf);
13    send_uart1("\r\n");
14    return len; 
15 }

通过上面的函数步骤,就可以做出标准打印函数的效果,这里需要注意的是,在第 12 13行中,需要修改为你自己的串口输入函数。

  1. 代码解释
    在上述函数或printf函数中,都会用到参数 … (省略号),这个省略号的代表的是告诉编译器,除了有一个参数pcFormat固定以外,后面跟的参数的个数和类型是可变的。因此,针对不定参数,就需要用到诸如va_start; tva_arg; va_end; 这样的函数。
    vsprintf 这个函数是用于向字符串中打印数据、数据格式用户自定义,就好比有下面这个程序段:
int a = 22;
div_printf("a = %d", a);

vsprintf 的作用就是将数据a 以字符的形式输出到一个字符数组中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值