vfscanf, vfwscanf

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu stdio.h - Index


Header-Datei

stdio.h

Kategorie

Eingabe-/Ausgaberoutinen

Prototyp

int vfscanf(FILE *stream, const char *format,va_list arglist);

int vfwscanf(FILE *stream, const wchar_t *format,va_list arglist);

Beschreibung

Untersucht und formatiert Eingaben aus einem Stream.

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.

Einzelheiten zu den Formatbezeichnern finden Sie unter scanf-Formatbezeichner.

vfscanf untersucht Zeichen für Zeichen eine Reihe von Eingabefeldern, die aus einem Stream gelesen werden. Darauf wird jedes Feld entsprechend den Formatbezeichnern formatiert, die in dem im Parameter format an vfscanf übergebenen Format-String enthalten sind. Schließlich speichert vfscanf die formatierte Eingabe unter einer der Adressen, die ihr in dem Argument übergeben wurden, das auf das Argument format folgt. Die Anzahl der Formatbezeichner und Adressen muss der Anzahl der Eingabefelder entsprechen. vfscanf 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 Erläuterung der möglichen Gründe finden Sie unter scanf.

Rückgabewert

vfscanf 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 0.

Versucht vfscanf, über das Dateiende hinaus zu lesen, wird EOF zurückgegeben.

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(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++

+

+

+