C-Bibliotheksfunktionen -fscanf()

C-Standardbibliothek - <stdio.h>

Beschreibung

C-Bibliotheksfunktionenint fscanf(FILE *stream, const char *format, ...)Liest formatierte Eingabe aus dem Stream.

Deklaration

Unten ist die Deklaration der Funktion fscanf() aufgeführt.

int fscanf(FILE *stream, const char *format, ...)

Parameter

  • stream-- Dies ist ein Zeiger auf ein FILE-Objekt, das den Stream identifiziert.
  • format-- Dies ist eine C-Zeichenkette, die eines oder mehrere der folgenden Elemente enthält:Leerraumzeichen, Nicht-LeerraumzeichenundFormatbezeichner。
    Der Formatbezeichner hat die Form[=%[*][width][modifiers]type=], wie unten ausführlich erklärt:
ParameterBeschreibung
*Dies ist ein optionales Sternchen, das angibt, dass die Daten aus dem Stream gelesen, aber ignoriert werden können, d. h., sie werden nicht im entsprechenden Argument gespeichert.
widthDies gibt die maximale Anzahl von Zeichen an, die im aktuellen Lesevorgang gelesen werden sollen.
ModifikatorenGibt eine andere Größe für die Daten an, auf die das entsprechende zusätzliche Argument zeigt, als Integer (für d, i und n), unsigned Integer (für o, u und x) oder Gleitkommazahl (für e, f und g): h: short integer (für d, i und n) oder unsigned short integer (für o, u und x) l: long integer (für d, i und n) oder unsigned long integer (für o, u und x) oder double (für e, f und g) L: long double (für e, f und g)
typeEin Zeichen, das den Typ der zu lesenden Daten und die Art und Weise angibt, wie die Daten gelesen werden. Siehe die nächste Tabelle für Details.

fscanf-Typbezeichner:

TypeQualifizierende EingabeArgumenttyp
cEinzelnes Zeichen: liest das nächste Zeichen. Wenn eine andere Breite als 1 angegeben ist, liest die Funktion width Zeichen und speichert sie in aufeinanderfolgenden Positionen des über das Argument übergebenen Arrays. Am Ende wird kein Nullzeichen angehängt.char *
dDezimalzahl: Das Vorzeichen + oder - vor der Zahl ist optional.int *
e,E,f,g,GGleitkommazahl: enthält einen Dezimalpunkt, ein optionales führendes Vorzeichen + oder -, ein optionales nachfolgendes Zeichen e oder E sowie eine Dezimalziffer. Zwei gültige Beispiele sind -732.103 und 7.12e4float *
oOktale Ganzzahl.int *
sZeichenkette. Liest aufeinanderfolgende Zeichen, bis ein Leerraumzeichen angetroffen wird (Leerraumzeichen können Leerzeichen, Zeilenumbrüche und Tabulatoren sein).char *
uVorzeichenlose Dezimal-Ganzzahl.unsigned int *
x,XHexadezimale Ganzzahl.int *
  • Zusätzliche Argumente-- Abhängig von der Formatzeichenkette kann die Funktion eine Folge zusätzlicher Argumente erwarten, wobei jedes einen Wert enthält, der eingefügt wird und jedes im Formatparameter angegebene %-Tag ersetzt. Die Anzahl der Argumente sollte der Anzahl der %-Tags entsprechen.

Rückgabewert

Bei Erfolg gibt die Funktion die Anzahl der erfolgreich abgeglichenen und zugewiesenen Elemente zurück. Wenn das Dateiende erreicht wird oder ein Lesefehler auftritt, gibt sie EOF zurück.

Beispiel

Das folgende Beispiel demonstriert die Verwendung der Funktion fscanf().

#include <stdio.h>
#include <stdlib.h>


int main()
{
   char str1[10], str2[10], str3[10];
   int year;
   FILE * fp;

   fp = fopen ("file.txt", "w+");
   fputs("We are in 2014", fp);
   
   rewind(fp);
   fscanf(fp, "%s %s %s %d", str1, str2, str3, &year);
   
   printf("Read String1 |%s|\n", str1 );
   printf("Read String2 |%s|\n", str2 );
   printf("Read String3 |%s|\n", str3 );
   printf("Read Integer |%d|\n", year );

   fclose(fp);
   
   return(0);
}

Lassen Sie uns das obige Programm kompilieren und ausführen, was das folgende Ergebnis erzeugt:

Read String1 |We|
Read String2 |are|
Read String3 |in|
Read Integer |2014|

C-Standardbibliothek - <stdio.h>

Weitere Erweiterungen