stdio.h
    Función vfprintf ANSI C
int vfprintf(FILE *stream, const char *formato, va_list argumentos);
Esta función es equivalente a fprintf, con la lista de argumentos de variables reemplazado por argumentos, que es inicializado por la macro va_start (y posiblemente por llamadas posteriores a va_arg. La función vfprintf no invoca la macro va_end.
Valor de retorno:
La función vfprintf retorna el número de caracteres transmitidos, o un valor negativo si se produce un error de salida.
Ejemplo:
#include <stdio.h>
#include <stdarg.h>
int mi_vfprintf( FILE *stream, const char *formato, ... )
{
   va_list listaPtr;
   int resultado=0;
   va_start( listaPtr, formato );
   resultado = vfprintf( stream, formato, listaPtr );
   va_end( listaPtr );
   return resultado;
}
int main()
{
   FILE *fichero;
   char nombre[11] = "datos6.dat";
   unsigned int i;
   fichero = fopen( nombre, "w" );
   printf( "Fichero: %s -> ", nombre );
   if( fichero )
      printf( "creado (ABIERTO)\n" );
   else
   {
      printf( "Error (NO ABIERTO)\n" );
      return 1;
   }
   mi_vfprintf( fichero, "Esto es un ejemplo de usar la funcion \'vfprintf\'\n" );
   mi_vfprintf( fichero, "\t 2\t 3\t 4\n" );
   mi_vfprintf( fichero, "x\tx\tx\tx\n\n" );
   for( i=1; i<=10; i++ )
      mi_vfprintf( fichero, "%d\t%d\t%d\t%d\n", i, i*i, i*i*i, i*i*i*i );
   mi_vfprintf( stdout, "Datos guardados en el fichero: %s\n", nombre );
   if( !fclose(fichero) )
      printf( "Fichero cerrado\n" );
   else
   {
      printf( "Error: fichero NO CERRADO\n" );
      return 1;
   }
   return 0;
}