Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

vfprintf - Formatierte Ausgabe in eine Datei

&pagelevel(4)&pagelevel

Definition

#include <stdio.h>

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

vfprintf gleicht der Funktion fprintf. Im Unterschied zu fprintf erlaubt vfprintf die Ausgabe von Argumenten, deren Anzahl und Datentyp zum Übersetzungszeitpunkt nicht bekannt sind. vfprintf wird innerhalb von Funktionen benutzt, an die der Aufrufer jeweils eine andere Formatzeichenkette sowie andere auszugebende Argumente übergeben kann. Die Formalparameterliste der Funktionsdefinition sieht dafür eine Formatzeichenkette format und eine variable Argumentenliste ", ..." vor.
format ist eine Formatzeichenkette wie bei printf mit ANSI-Funktionalität beschrieben (siehe dort).

vfprintf arbeitet eine Argumentenliste arg mit internen va_arg-Aufrufen sukzessive ab und schreibt die Argumente gemäß der Formatzeichenkette format in die Datei mit Dateizeiger dz. Die variable Argumentenliste arg muss vor dem Aufruf von vfprintf mit dem Makro va_start initialisiert worden sein.

Returnwert

Anzahl der ausgegebenen Zeichen

bei Erfolg.

Integer< 0       bei Fehler.

Hinweise

vfprint beginnt in der variablen Argumentenliste immer mit dem ersten Argument. Die Ausgabe ab einem beliebigen Argument lässt sich mit entsprechend vielen va_arg-Aufrufen vor Aufruf der Funktion vfprintf erreichen. Jeder va_arg-Aufruf positioniert die Argumentenliste um ein Argument weiter.

vfprintf ruft nicht das Makro va_end auf. Da vfprintf das Makro va_arg benutzt, ist der Wert von arg nach der Rückkehr unbestimmt.

Bei Textdateien mit der Zugriffsart SAM und variabler Satzlänge, für die zusätzlich eine maximale Satzlänge angegeben ist, gilt: Wenn bei fopen die Angabe split=no gemacht wurde, werden Sätze, die länger als die maximale Satzlänge sind, beim Schreiben auf die maximale Satzlänge gekürzt. Standardmäßig oder mit der Angabe split=yes werden diese Sätze in mehrere Sätze aufgeteilt. Hat ein Satz genau die maximale Satzlänge, wird nach diesem ein Satz der Länge Null geschrieben.

Beispiel

In folgendem Programmausschnitt gibt die Funktion vfprintf pro Aufruf der Fehlerroutine error unterschiedliche Arten von Informationen aus.

#include <stdarg.h>
#include <stdio.h>
void error(char *f, ...);
int main(void)
{
  .
  .
  char *weight = "WARNING";
  int num = 20;
  error("Fehlerklasse: %s, Anzahl: %d\n", weight, num);
  .
  .
  error("Kein Fehler\n");
  .
  .
}
void error(char *format, ...)
{
  va_list arg;
  va_start(arg, format);
  vfprintf(stderr, format, arg);
  va_end (arg);
}

Siehe auch

vprintf, vsprintf, vsnprintf