2009-10-10 6 views
7

저는 fastcgi 라이브러리를 사용하여 응용 프로그램을 만들고 있으며 인쇄 방법은 약간 장황합니다. 난 내 자신의 방식으로 자신의 fprintf와 기능을 포장하기 위해 노력하고있어 :한 va_list를 다른 매개 변수로 전달

내가

FCGX_FPrintF (교체 아웃, 숯불 *의 FMT, ...)를 설정하고 싶습니다;

기록에

(숯 *의 strFormat, ...);

나는 va_list의 마법을 발견했지만 fprintf 기능에 va_list 값을 전달하는 쉬운 방법을 찾을 수 없습니다. 이것을 할 수있는 방법이 있습니까? 나는 vsprintf와 vprintf가 있다는 것을 알고 있으므로 그것이 상상하는 것보다 더 힘들어 야합니다. 다른 모든 실패하면

, 난 그냥 쓰기 기능 당신은 빠른 CGI 라이브러리에 vfprintf()의 아날로그를 찾는 것

+0

도움이된다면 라이브러리의 헤더는 다음과 같습니다 http://www.fastcgi.com/devkit/include/fcgiapp.h – RandomInsano

답변

14

에게 과부하가 있습니다. 하나가 있다는 것은 적어도 적당히 그럴듯하다.

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

그래서 함수가 존재한다는 가능성이 매우 높다; FCGX_FPrintF()를 구현하는 쉬운 방법은 공식적으로 노출되는지 여부를 확인해야합니다.


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를 사용하여 문자열을 직접 포맷 한 다음 인쇄 기능으로 보냅니다.

관련 문제