printf() оставьте в покое. Ознакомьтесь с первоисточником - vsprintf() и пишите в свои функции в
стиле:
Код
void bprintf( char *arg_list, ...)
{
va_list arg_buffer;
char *tbptr = tobuf;
va_start( arg_buffer, arg_list );
vsprintf( tobuf, arg_list, arg_buffer );
while( *tbptr )
boutchar( *tbptr++ );
}