Freigeben über


fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l

Lesen formatierte Daten aus einem Stream.Dies sind Versionen von fscanf, _fscanf_l, fwscanf, _fwscanf_l mit beschrieben, wie unter Security Enhancements in Sicherheitsfeatures im CRT.

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 auf FILE Struktur.

  • format
    Formatsteuerzeichenfolge.

  • argument
    Optionale Argumente.

  • locale
    Das zu verwendende Gebietsschema.

Rückgabewert

Jede dieser Funktionen gibt die Anzahl der erfolgreich konvertierten und zugewiesenen Felder zurück. Der Rückgabewert schließt keine Felder, die gelesen wurden, jedoch kein Wert zugewiesen.Ein Rückgabewert von 0 gibt an, dass keine Felder zugewiesen wurden.Wenn ein Fehler auftritt oder wenn das Ende des Dateidatenstroms vor der ersten Konvertierung erreicht ist, ist der Rückgabewert EOF für fscanf_s und fwscanf_s.

Diese Funktionen überprüfen deren Parameter.Wenn Stream Ian-nvalid Dateizeiger ist, oder format ein NULL-Zeiger ist, rufen diese Funktionen der ungültige Parameter für ein, wie in Parametervalidierungbeschrieben.Wenn die Ausführung fortgesetzt werden kann, darf dieser Funktionen geben EOF festlegen und errno zu EINVAL.

Hinweise

Die fscanf_s-Funktion liest Daten aus der aktuellen Position von stream in die Positionen, die durch argument angegeben werden (sofern vorhanden).Jedes argument muss ein Zeiger auf eine Variable eines Typs handeln, der auf ein Typspezifizierer in formatentspricht.format steuert die Interpretation der Eingabefelder und weist das gleiche Form und Funktion wie das format-Argument für scanf_s. Für Formatangaben-Felder – scanf Features und Funktionen wscanf finden Sie eine Beschreibung der format*.*fwscanf_s ist eine Breitzeichen-Version von fscanf_s.fwscanf_s zu - Argument des Formats ist eine Zeichenfolge mit Breitzeichen.Diese Funktionen verhalten sich identisch, wenn der Stream in ANSI-Modus geöffnet ist.derzeit nicht unterstütztfscanf_s Eingaben von einem UNICODE-Datenstrom.

Der Hauptunterschied zwischen den sicheren Funktionen (mit dem _sSuffix) und der älteren Funktionen besteht darin, dass die sicheren Funktionen die Größe in Zeichen für jeden c, C, s, Sund unmittelbar auf die Variable als Argument übergeben werden soll [ im Feld Typ erforderlich.Weitere Informationen finden Sie unter scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l und scanf Breitenangabe.

HinweisHinweis

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

Die Versionen dieser Funktionen mit dem _l Suffix sind identisch, mit der Ausnahme, dass sie verwenden den Gebietsschemaparameter, der anstelle des aktuellen Threads gebietsschemas übergeben wird.

Zuweisung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definieren

_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>

Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.

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::EA::StreamReader::ReadLine. Siehe auch Parse-Methoden, z. B. System::::doubleAnalyse.

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