sprintf 实例

文章出处:http://blog.csdn.net/shift_wwx

请转载的朋友标明出处~~

sprintf 在填充buffer 的时候,可能需要将buffer 一并的打印出来,一般情况sprintf 之后加个log 就可以了,但是碰到很多应用sprintf的地方就很累了,可以包装起来。

#define SQL_DEBUG 0
#define getSqlParams(func, buffer, args...) \
    do{\
        sprintf(buffer, ##args);\
        if(SQL_DEBUG){\
            LOGD("getSqlParams for %s\n", func);\
            LOGD("%s = %s\n",#buffer, buffer);\
        }\
    }while(0)
或者是多加一个函数做一些补充的事情:

#define getSqlParams(func, buffer, args...) sprintf(buffer, ##args);\
    temp_add(func, buffer)

宏定义中的省略号就是指一串数目不限的参数列表,前面用args只有为了后面引用这串参数.

至于省略号的用法可以看一下:函数参数中带省略号的用法


来看一下sprintf 的source code:

int
sprintf(char *str, const char *fmt, ...)
{
    int ret;
    va_list ap; 
    FILE f;
    struct __sfileext fext;

    _FILEEXT_SETUP(&f, &fext);
    f._file = -1; 
    f._flags = __SWR | __SSTR;
    f._bf._base = f._p = (unsigned char *)str;
    f._bf._size = f._w = INT_MAX;
    va_start(ap, fmt);
    ret = __vfprintf(&f, fmt, ap);
    va_end(ap);
    *f._p = '\0';
    return (ret);
} 
进_vfprintf 一看,还是有的晕乎的,后期研究了~~






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

私房菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值