1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <stdarg.h>
#include <linux/types.h>
#include <stdio.h>
#include <stdlib.h>
extern int vsnprintf (char *str,size_t size,const char *format, va_list arg_ptr);
int fprintf(FILE *f,const char *format,...) {
int n;
char *printf_buf;
/* char printf_buf[1024]; */
va_list arg_ptr;
va_start(arg_ptr, format);
n=vsnprintf(0,1000000,format,arg_ptr);
/* write(1,printf_buf,strlen(printf_buf)); */
va_end (arg_ptr);
va_start (arg_ptr, format);
printf_buf=alloca(n+2);
n=vsnprintf(printf_buf,n+1,format,arg_ptr);
va_end (arg_ptr);
fwrite(printf_buf,n,1,f);
return n;
}
|