曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 7698|回复: 0
打印 上一主题 下一主题

[常规] vsprintf(), vsnprintf() | 打印输出

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-10-14 22:52:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
函数原型
#include <stdarg.h>
int vsprintf(char *str, const char *format, va_list ap);
int vsnprintf(char *str, size_t size, const char *format, va_list ap);

说明
vsprintf() 和 vsnprintf() 基本一样,但后者比前者多了一个字节数的限定。

vsprintf() 参数说明
str  : 一般是个字符缓冲区的首地址;
format : 是带有格式说明的字符串,如同 printf() 中第一个参数;
ap : va_list 类型,关于 va_list 类型说明见:http://www.groad.net/bbs/read.php?tid-947.html

应用举例
#include <stdio.h>
#include <stdarg.h>

void log_msg (const char *text, ...)
{
         char buf [256];

         va_list args;

         va_start (args, text);

         vsprintf (buf , text, args);

         printf ("%s", buf);

         va_end (args);
}


int main()
{
         int year = 2008;
         char *ptr = "china";

         log_msg ("hello %d Beijing and welcome to %s\n", year, ptr);

         return (0);
}
      

运行与输出
[beyes@localhost vsprintf]$ ./vsprintf.exe
hello 2008 Beijing and welcome to china

从输出可见,在 log_msg() 函数中,输入到 buf 数组里的内容,是经过格式转换后的内容,不是把 %d , %s 这样的格式原本不动的照搬到 buf 数组中。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-6 12:22 , Processed in 0.059845 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表