vfscanf_s, vfwscanf_s
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++ |
---|---|---|---|
+ |
+ |
+ |