1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include "dietstdarg.h" int vfprintf(FILE *fstream, const char *format, va_list ap) { char *tmp; va_list cp_ap; size_t n = 0; va_copy(cp_ap, ap); n=vsnprintf(0, 1000000, format, cp_ap); tmp=alloca(n+2); vsnprintf(tmp, n+1, format, ap); fwrite(tmp, n,1, fstream); return n; }