vfprintf()

Updated: April 19, 2023

Write formatted output to a file (varargs)

Synopsis:

#include <stdio.h>
#include <stdarg.h>

int vfprintf( FILE* fp,
              const char* format,
              va_list arg );

Arguments:

fp
The stream to which you want to send the output.
format
A string that specifies the format of the output. The formatting string determines what additional arguments you need to provide. For more information, see printf().
arg
A variable-argument list of the additional arguments, which you must have initialized with the va_start() macro.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The vfprintf() function writes output to the file pointed to by fp, under control of the argument format.

The vfprintf() function is a “varargs” version of fprintf().

Returns:

The number of characters written, or a negative value if an output error occurred (errno is set).

Examples:

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

FILE *LogFile;

/* a general error routine */

void errmsg( const char *format, ... )
  {
    va_list arglist;

    fprintf( stderr, "Error: " );
    va_start( arglist, format );
    vfprintf( stderr, format, arglist );
    va_end( arglist );
    if( LogFile != NULL ) {
      fprintf( LogFile, "Error: " );
      va_start( arglist, format );
      vfprintf( LogFile, format, arglist );
      va_end( arglist );
    }
  }

int main( void )
  {
    LogFile = fopen( "error.log", "w" );
    errmsg( "%s %d %s", "Failed", 100, "times" );
    return EXIT_SUCCESS;
  }

Classification:

ANSI, POSIX 1003.1

Safety:  
Cancellation point Yes
Interrupt handler No
Signal handler No
Thread Yes