vfscanf_s, vfwscanf_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 vfscanf_s(FILE * restrict stream, const char * restrict format, va_list arg);

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

Beschreibung

Ersetzt vfscanf und fügt Sicherheitserweiterungen hinzu.

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

vfscanf_s entspricht vfscanf, 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).

Rückgabewert

vfscanf_s gibt die Anzahl erfolgreich untersuchter, konvertierter und gespeicherter Eingabefelder zurück. Die untersuchten Felder, die nicht gespeichert wurden, werden nicht gezählt. Wenn keine Felder gespeichert wurden, ist der Rückgabewert 0.

Wenn vfscanf_s einen Eingabefehler entdeckt, ist der Rückgabewert EOF.

Beispiel

#include <stdio.h> 
#include <stdlib.h> 
#include <stdarg.h> 
FILE *fp; int vfsf(char *fmt, ...) 
{ 
    va_list  argptr; 
    int cnt; 
    va_start(argptr, fmt); 
    cnt = vfscanf_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); 
   } 
   fprintf(fp,"%d %f %s\n",inumber,fnumber,string); 
   rewind(fp); 
   vfsf("%d %f %s",&inumber,&fnumber,string); 
   printf("%d %f %s\n",inumber,fnumber,string); 
   fclose(fp); 
   return 0;
}

Portabilität

POSIX Win32 ANSI C ANSI C++

+

+

+

Siehe auch