vfprintf_s, vfwprintf_s

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu stdio.h - Index


Header-Datei

stdio.h

Kategorie

Funktionen für die formatierte Eingabe/Ausgabe

Prototyp

int vfprintf_s(FILE * restrict stream, const char * restrict format, va_list arg);

int vfwprintf_s(FILE * restrict stream, const wchar_t * restrict format, va_list arg);

Beschreibung

Ersetzt vfprintf, vfwprintf und fügt Sicherheitserweiterungen hinzu.

Die v...printf_s-Funktionen können als alternative Eintrittspunkte für die ...printf_s-Funktionen betrachtet werden. Sie verhalten sich genau wie ihre ...printf_s-Entsprechungen, akzeptieren jedoch einen Zeiger auf eine Argumentliste statt der Argumentliste selbst.

vfprintf_s entspricht vfprintf, vfwprintf, fügt aber Laufzeiteinschränkungen bezüglich der Gültigkeit von stream, format und der Elemente in arg hinzu, die einem %s-Formatbezeichner entsprechen (dürfen keine Null-Zeiger sein).

vfprintf_s akzeptiert einen Zeiger auf eine Reihe von Argumenten, ordnet jedem Argument einen Formatbezeichner aus dem String zu, auf den format zeigt, und schreibt die formatierten Daten in einen Stream. Die Anzahl der Formatbezeichner in der Argumentliste (arg) muss gleich der Anzahl der Elemente sein.

Rückgabewert

Bei erfolgreicher Ausführung gibt vfprintf_s die Anzahl der ausgegebenen Zeichen zurück.

Bei einem Fehler wird ein negativer Wert zurückgegeben.

Beispiel

#include <stdio.h> 
#include <stdlib.h> 
#include <stdarg.h> 
FILE *fp; 
int vfpf(char *fmt, ...) 
{ 
   va_list argptr; 
   int cnt; 
   va_start(argptr, fmt); 
   cnt = vfprintf_s(fp, fmt, argptr); 
   va_end(argptr); 
   return(cnt); 
} 
int main(void) 
{ 
   int inumber = 30; 
   float fnumber = 90.0;
   char string[4] = "abc"; 
   fp = tmpfile(); 
   if (fp == NULL) 
   { 
      perror("tmpfile() call");
      exit(1); 
   } 
   vfpf("%d %f %s", inumber, fnumber, string); 
   rewind(fp);
   fscanf_s(fp,"%d %f %s", &inumber, &fnumber, string);
   printf_s("%d %f %s\n", inumber, fnumber, string);
   fclose(fp);
   return 0;
}

Portabilität

POSIX Win32 ANSI C ANSI C++

vfprintf_s

+

+

+

+

vfwprintf_s

+

+

+

Siehe auch