2009-10-10 16 views
7

私はfastcgiライブラリを使ってアプリケーションを作成しています。その印刷方法は少し冗長です。私は自分の方法で自分のfprintf関数をラップしようとしている:一つのパラメータとしてva_listを別のものに渡す

私は

FCGX_FPrintF(アウト、するchar * fmtは、...)を有効にしたいと思います。

書き込みに

(のchar *のstrFormat、...);

私はva_listの魔法を見つけましたが、va_list値をfprintf関数に渡す簡単な方法を見つけることができません。これを行う方法はありますか?私はvsprintfとvprintfが存在することを知っているので、それは私が想像するよりも難しいはずです。

他のすべてが失敗した場合、私はちょうどあなたが高速CGIライブラリにvfprintf()のアナログを見つける必要があります書き込み機能

+0

ここにライブラリのヘッダがあります。 http://www.fastcgi.com/devkit/include/fcgiapp.h – RandomInsano

答えて

14

に過負荷をかけます。そこには少なくとも適度に説得力があります。 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 huh?助けてくれてありがとう – RandomInsano

1

プラットフォームに依存しない方法でこれを行う方法はないと思います。 おそらくvsprintfを使って自分自身で文字列をフォーマットし、それを印刷機能に送るだけです。

関連する問題