vsnprintf函数详解-----学习了解

vsnprintf函数:C标准库函数-<starg.h>
(虽然网上说实在stdarg.h中,但是我在arm的stdarg.h中没有看到这个函数,有点疑惑)

int vsnprintf(char *s, size_t n, const char *format, va_list arg)
功能:将格式化的可变参数列表写入大小的缓冲区,如果在printf上使用格式,则使用相同的文本组成字符串,如果使用arg标识的变量则将参数列表中的元素作为字符串存储在char型指针s中。
传参
s:指向存储结果C字符串的缓冲区的指针。
n:要转换的字符的长度(bytes)
formate:可变参数
arg:申请参数列表的变量,标识使用va_start初始化的变量参数列表的值。
返回值
如果n值勾搭,则会写入的字符数,但是不包括’\0’的终止符。如果发生编码错误则返回值小于0.
注:只有返回值是非负而且小于n时,字符串才完全被写入。

注:
vsnprintf函数一般都与va_start和va_end一起使用

实例

#include <stdio.h>
#include <stdarg.h>

#define MAXLEN 20

int test_log(char* format, ...)
{
    char str_tmp[MAXLEN];
    int i=0,j=0;
    va_list arg;                           
    va_start (arg, format);                 
    i=vsnprintf(str_tmp, MAXLEN, format, arg);  
    va_end(arg);                            

    printf("%s", str_tmp); 
    return i;
}

void main()
{   
    int i=test_log("This is vsprintf test:%s%d\n","string",1024);    
}

运行结果为:
This is vsprintf test:string1024

嵌入式中这个函数常被用在debug函数中来将打印调试信息,跟调试串口绑定在一起,可以实现可变参的组合输出,想当与实现一个简单的printf函数已供一个debug的接口。
如下:
实际项目中的debug.c的部分实例代码

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值