Freigeben über


fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l

Liest formatierte Daten aus einem Stream. Diese Versionen von fscanf, _fscanf_l, fwscanf, _fwscanf_l enthalten Sicherheitserweiterungen, wie unter Sicherheitsfunktionen in der CRT beschrieben.

int fscanf_s( 
   FILE *stream,
   const char *format [,
   argument ]... 
);
int _fscanf_s_l( 
   FILE *stream,
   const char *format,
   locale_t locale [,
   argument ]... 
);
int fwscanf_s( 
   FILE *stream,
   const wchar_t *format [,
   argument ]... 
);
int _fwscanf_s_l( 
   FILE *stream,
   const wchar_t *format,
   locale_t locale [,
   argument ]... 
);

Parameter

  • stream
    Zeiger zur FILE-Struktur.

  • format
    Formatsteuerzeichenfolge.

  • argument
    Optionale Argumente.

  • locale
    Das zu verwendende Gebietsschema.

Rückgabewert

Jede dieser Funktionen gibt die Anzahl der Felder zurück, die erfolgreich konvertiert und zugewiesen wurden; der Rückgabewert umfasst keine Felder, die gelesen, aber nicht zugewiesen wurden. Ein Rückgabewert von 0 gibt an, dass keine Felder zugewiesen wurden. Wenn ein Fehler auftritt oder das Ende des Dateistreams vor der ersten Konvertierung erreicht wird, ist der Rückgabewert EOF für fscanf_s und fwscanf_s.

Diese Funktionen überprüfen ihre Parameter. Wenn stream ein ungültiger Dateizeiger ist oder format ein NULL-Zeiger ist, rufen diese Funktionen den ungültigen Parameterhandler wie in Parametervalidierung beschrieben auf. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen EOF zurück und stellen errno auf EINVAL ein.

Hinweise

Die fscanf_s-Funktion liest Daten aus der aktuellen Position von stream in die Speicherorte, die vom argument angegeben werden (falls vorhanden). Jedes argument muss ein Zeiger auf einen Variablentyp sein, der einem Typspezifizierer im format entspricht. format steuert die Interpretation der Eingabefelder und hat die gleiche Form und Funktion wie das format-Argument für scanf_s; unter Formatangabefelder: scanf- und wscanf-Funktionen finden Sie eine Beschreibung von format. fwscanf_s ist eine Breitzeichen-Version von fscanf_s; das Formatargument für fwscanf_s ist eine Zeichenfolge mit Breitzeichen. Diese Funktionen verhalten sich identisch, wenn der Stream im ANSI-Modus geöffnet ist. fscanf_s unterstützt derzeit nicht die Eingabe aus einem UNICODE-Stream.

Der Hauptunterschied zwischen den sichereren Funktionen (mit dem _s-Suffix) und den anderen Versionen ist, dass die sichereren Funktionen es erfordern, dass die Größe in Zeichen von jedem c, C, s, S und [-Typfeld als Argument sofort nach der folgenden Variablen übergeben werden muss. Weitere Informationen finden Sie unter scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l und scanf-Breitenangabe.

Hinweis

Der Größenparameter ist vom Typ unsigned und nicht vom Typ size_t.

Die Versionen dieser Funktionen mit dem _l-Suffix sind beinahe identisch, verwenden jedoch den Gebietsschemaparameter, der anstelle des aktuellen Threadgebietsschemas übergeben wurde.

Zuordnung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definiert

_UNICODE definiert

_ftscanf_s

fscanf_s

fscanf_s

fwscanf_s

_ftscanf_s_l

_fscanf_s_l

_fscanf_s_l

_fwscanf_s_l

Anforderungen

Funktion

Erforderlicher Header

fscanf_s, _fscanf_s_l

<stdio.h>

fwscanf_s, _fwscanf_s_l

<stdio.h> oder <wchar.h>

Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

// crt_fscanf_s.c
// This program writes formatted
// data to a file. It then uses fscanf to
// read the various data back from the file.
 
#include <stdio.h>
#include <stdlib.h>

FILE *stream;

int main( void )
{
   long l;
   float fp;
   char s[81];
   char c;

   errno_t err = fopen_s( &stream, "fscanf.out", "w+" );
   if( err )
      printf_s( "The file fscanf.out was not opened\n" );
   else
   {
      fprintf_s( stream, "%s %ld %f%c", "a-string", 
               65000, 3.14159, 'x' );
      // Set pointer to beginning of file:
      fseek( stream, 0L, SEEK_SET );

      // Read data back from file:
      fscanf_s( stream, "%s", s, _countof(s) );
      fscanf_s( stream, "%ld", &l );

      fscanf_s( stream, "%f", &fp );
      fscanf_s( stream, "%c", &c, 1 );

      // Output data read:
      printf( "%s\n", s );
      printf( "%ld\n", l );
      printf( "%f\n", fp );
      printf( "%c\n", c );

      fclose( stream );
   }
}
  

.NET Framework-Entsprechung

System::IO::StreamReader::ReadLine. Siehe auch Parse-Methoden wie System::Double::Parse.

Siehe auch

Referenz

Stream-E/A

_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l

fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l

scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l

sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l

fscanf, _fscanf_l, fwscanf, _fwscanf_l