2009-10-10 245 views
7

我使用fastcgi库创建应用程序,并且它们的打印方法有点冗长。我试图总结自己的函数fprintf在我自己的方法:将一个va_list作为参数传递给另一个

我想谈谈

FCGX_FPrintF(满分,字符* FMT,...);

写(字符* strFormat,...);

我发现了va_list的神奇之处,但找不到一个简单的方法将va_list值传递到它们的fprintf函数中。有没有办法做到这一点?我知道vsprintf和vprintf存在,所以它肯定比我想像的要难。

如果一切都失败了,我就超载写入功能

+0

这里是图书馆的标题,如果它有帮助 http://www.fastcgi.com/devkit/include/fcgiapp.h – RandomInsano 2009-10-10 20:24:31

回答

14

你将不得不找到vfprintf()模拟在快速CGI库。至少有一个是合理的;实施FCGX_FPrintF()简单的方法是:

void FCGX_FPrintF(FILE *out, char *fmt, ...) 
{ 
    va_list args; 
    va_start(args, fmt); 
    FCGX_VFPrintF(out, fmt, args); 
    va_end(args); 
} 

所以这是极有可能的函数存在;您需要检查它是否正式公开。


Fast CGI web site快速访问表明,FCGX前缀用于由fgciapp.h头部声明的功能,而这又包含:

/* 
*---------------------------------------------------------------------- 
* 
* FCGX_FPrintF, FCGX_VFPrintF -- 
* 
*  Performs printf-style output formatting and writes the results 
*  to the output stream. 
* 
* Results: 
*  number of bytes written for normal return, 
*  EOF (-1) if an error occurred. 
* 
*---------------------------------------------------------------------- 
*/ 
DLLAPI int FCGX_FPrintF(FCGX_Stream *stream, const char *format, ...); 

DLLAPI int FCGX_VFPrintF(FCGX_Stream *stream, const char *format, va_list arg); 

所以,还有的功能与界面完成。

+0

哇,我曾经感到愚蠢...... RTFM呵呵?谢谢您的帮助 – RandomInsano 2009-10-10 20:27:34

1

我不相信有什么办法可以以平台独立的方式来做到这一点。 我可能会使用vsprintf自己格式化字符串,然后将其发送到打印功能。

相关问题