vscanf_s, vwscanf_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 vscanf_s(const char * restrict format, va_list arg);

int vwscanf_s(const wchar_t * restrict format, va_list arg);

Beschreibung

Ersetzt vscanf und fügt Sicherheitserweiterungen hinzu.

Hinweis: Verwenden Sie diese Funktion nicht in Win32-GUI-Anwendungen.

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.

vscanf_s untersucht Zeichen für Zeichen eine Reihe von Eingabefeldern, die aus stdin gelesen werden. Danach wird jedes Feld entsprechend den Formatbezeichnern formatiert, die in dem im Parameter format an vscanf übergebenen Format-String enthalten sind. Schließlich speichert vscanf_s die formatierte Eingabe an den in der Argumentliste übergebenen Adressen. Die Anzahl der Formatbezeichner und Adressen muss der Anzahl der Eingabefelder entsprechen.

vscanf_s kann die Untersuchung eines bestimmten Feldes abbrechen, bevor das normale Feldendezeichen (Whitespace-Zeichen) erreicht ist, oder kann aus verschiedenen Gründen die gesamte Verarbeitung beenden. Eine Beschreibung der möglichen Gründe finden Sie unter scanf.

vscanf_s entspricht scanf_s, wscanf_s. Die Variablen-Argumentliste wird allerdings durch arg ersetzt. Die Funktion vscanf_s ruft das Makro va_end nicht auf.

Rückgabewert

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

Wenn ein Fehler auftritt, ist der Rückgabewert der Wert des Makros EOF.

Beispiel

#include <stdio.h>\
#include <stdarg.h> 
int vscnf(char *fmt, ...) 
{ 
   va_list argptr; 
   int cnt; 
   printf("Enter an integer, a float, and a string (e.g. i,f,s,)\n"); 
   va_start(argptr, fmt); 
   cnt = vscanf_s(fmt, argptr);
   va_end(argptr); 
   return(cnt);
} 
int main(void)
{ 
   int inumber; 
   float fnumber; 
   char string[80]; 
   vscnf("%d, %f, %s", &inumber, &fnumber, string); 
   printf_s("%d %f %s\n", inumber, fnumber, string); 
   return 0; 
}

Portabilität

POSIX Win32 ANSI C ANSI C++

+

+

+

Siehe auch