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
haben Sicherheitsverbesserungen, wie in den Sicherheitsfeatures in der CRT beschrieben.
Syntax
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 sie erfolgreich konvertiert und zugewiesen hat. Der Rückgabewert enthält 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
es sich um einen ungültigen Dateizeiger handelt oder format
ein Nullzeiger ist, rufen diese Funktionen den ungültigen Parameterhandler auf, wie in der Parameterüberprüfung beschrieben. 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 weist dasselbe Formular und dieselbe Funktion wie das format
Argument auf scanf_s
; siehe Formatspezifikationsfelder: scanf
und wscanf
Funktionen für eine Beschreibung von format
. fwscanf_s
ist eine Breitzeichenversion von fscanf_s
. Das fwscanf_s
-Formatargument ist eine Breitzeichenfolge. 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_l
, wscanf_s
und _wscanf_s_l
scanf
Width Specification.scanf_s
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.
Mapping generischer Textroutinen
TCHAR.H -Routine |
_UNICODE und _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> |
Weitere 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 );
}
}
a-string
65000
3.141590
x
Siehe auch
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