Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Odczytywanie sformatowanych danych ze strumienia. Dostępne są bezpieczniejsze wersje tych funkcji; zobacz fscanf_s, , fwscanf_s_fscanf_s_l, , _fwscanf_s_l.
Składnia
int fscanf(
FILE *stream,
const char *format [,
argument ]...
);
int _fscanf_l(
FILE *stream,
const char *format,
_locale_t locale [,
argument ]...
);
int fwscanf(
FILE *stream,
const wchar_t *format [,
argument ]...
);
int _fwscanf_l(
FILE *stream,
const wchar_t *format,
_locale_t locale [,
argument ]...
);
Parametry
stream
Wskaźnik do FILE struktury.
format
Ciąg kontroli formatu.
argument
Argumenty opcjonalne.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
Każda z tych funkcji zwraca liczbę pól pomyślnie przekonwertowanych i przypisanych; wartość zwracana nie zawiera pól, które zostały odczytane, ale nie zostały przypisane. Wartość zwracana 0 wskazuje, że żadne pola nie zostały przypisane. Jeśli wystąpi błąd lub gdy koniec strumienia plików zostanie osiągnięty przed pierwszą konwersją, zwracana wartość to EOF i fscanf fwscanf.
Te funkcje weryfikują swoje parametry. Jeśli stream lub format jest wskaźnikiem NULL , wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonanie jest dozwolone do kontynuowania, te funkcje zwracają EOF i ustawiają wartość errno EINVAL.
Uwagi
Funkcja fscanf odczytuje dane z bieżącej pozycji stream do lokalizacji podanych przez argument (jeśli istnieją). Każdy argument musi być wskaźnikiem do zmiennej typu odpowiadającej specyfikatorowi typu w programie format. formatsteruje interpretacją pól wejściowych i ma ten sam formularz i funkcję co format argument dla scanf; zobacz scanf opis .format
fwscanf jest wersją fscanfszerokoznakową ; argument formatu do fwscanf jest ciągiem o szerokim znaku. Te funkcje zachowują się identycznie, jeśli strumień jest otwarty w trybie ANSI. fscanf obecnie nie obsługuje danych wejściowych ze strumienia UNICODE.
Wersje tych funkcji z sufiksem _l są identyczne, z tą różnicą, że używają parametru ustawień regionalnych przekazanych zamiast bieżących ustawień regionalnych wątku.
Mapowania procedur tekstu ogólnego
TCHAR.H rutyna |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
|---|---|---|---|
_ftscanf |
fscanf |
fscanf |
fwscanf |
_ftscanf_l |
_fscanf_l |
_fscanf_l |
_fwscanf_l |
Aby uzyskać więcej informacji, zobacz Pola specyfikacji formatu: scanf i wscanf funkcje.
Wymagania
| Function | Wymagany nagłówek |
|---|---|
fscanf, _fscanf_l |
<stdio.h> |
fwscanf, _fwscanf_l |
<stdio.h> lub <wchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// crt_fscanf.c
// compile with: /W3
// This program writes formatted
// data to a file. It then uses fscanf to
// read the various data back from the file.
#include <stdio.h>
FILE *stream;
int main( void )
{
long l;
float fp;
char s[81];
char c;
if( fopen_s( &stream, "fscanf.out", "w+" ) != 0 )
printf( "The file fscanf.out was not opened\n" );
else
{
fprintf( stream, "%s %ld %f%c", "a-string",
65000, 3.14159, 'x' );
// Security caution!
// Beware loading data from a file without confirming its size,
// as it may lead to a buffer overrun situation.
// Set pointer to beginning of file:
fseek( stream, 0L, SEEK_SET );
// Read data back from file:
fscanf( stream, "%s", s ); // C4996
fscanf( stream, "%ld", &l ); // C4996
fscanf( stream, "%f", &fp ); // C4996
fscanf( stream, "%c", &c ); // C4996
// Note: fscanf is deprecated; consider using fscanf_s instead
// 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
Zobacz też
We/Wy strumienia
_cscanf, , _cscanf_l, , _cwscanf_cwscanf_l
fprintf, , _fprintf_l, , fwprintf_fwprintf_l
scanf, , _scanf_l, , wscanf_wscanf_l
sscanf, , _sscanf_l, , swscanf_swscanf_l
fscanf_s, , _fscanf_s_l, , fwscanf_s_fwscanf_s_l