Skip to content

Latest commit

 

History

History
155 lines (120 loc) · 5.56 KB

fscanf-fscanf-l-fwscanf-fwscanf-l.md

File metadata and controls

155 lines (120 loc) · 5.56 KB
description title ms.date api_name api_location api_type topic_type f1_keywords helpviewer_keywords
Learn more about: fscanf, _fscanf_l, fwscanf, _fwscanf_l
fscanf, _fscanf_l, fwscanf, _fwscanf_l
11/04/2016
fscanf
_fwscanf_l
_fscanf_l
fwscanf
msvcrt.dll
msvcr80.dll
msvcr90.dll
msvcr100.dll
msvcr100_clr0400.dll
msvcr110.dll
msvcr110_clr0400.dll
msvcr120.dll
msvcr120_clr0400.dll
ucrtbase.dll
DLLExport
apiref
fscanf
fwscanf
_ftscanf_l
_fwscanf_l
_ftscanf
_fscanf_l
fscanf function
fwscanf function
formatted data [C++], reading from streams
ftscanf_l function
_ftscanf_l function
_fwscanf_l function
data [CRT], reading from streams
_fscanf_l function
ftscanf function
fscanf_l function
streams [C++], reading formatted data from
_ftscanf function
fwscanf_l function

fscanf, _fscanf_l, fwscanf, _fwscanf_l

Read formatted data from a stream. More secure versions of these functions are available; see fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l.

Syntax

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 ]...
);

Parameters

stream
Pointer to FILE structure.

format
Format-control string.

argument
Optional arguments.

locale
The locale to use.

Return value

Each of these functions returns the number of fields successfully converted and assigned; the return value doesn't include fields that were read but not assigned. A return value of 0 indicates that no fields were assigned. If an error occurs, or if the end of the file stream is reached before the first conversion, the return value is EOF for fscanf and fwscanf.

These functions validate their parameters. If stream or format is a NULL pointer, the invalid parameter handler is invoked, as described in Parameter validation. If execution is allowed to continue, these functions return EOF and set errno to EINVAL.

Remarks

The fscanf function reads data from the current position of stream into the locations given by argument (if any). Each argument must be a pointer to a variable of a type that corresponds to a type specifier in format. format controls the interpretation of the input fields and has the same form and function as the format argument for scanf; see scanf for a description of format.

fwscanf is a wide-character version of fscanf; the format argument to fwscanf is a wide-character string. These functions behave identically if the stream is opened in ANSI mode. fscanf doesn't currently support input from a UNICODE stream.

The versions of these functions with the _l suffix are identical except that they use the locale parameter passed in instead of the current thread locale.

Generic-text routine mappings

TCHAR.H routine _UNICODE and _MBCS not defined _MBCS defined _UNICODE defined
_ftscanf fscanf fscanf fwscanf
_ftscanf_l _fscanf_l _fscanf_l _fwscanf_l

For more information, see Format specification fields: scanf and wscanf functions.

Requirements

Function Required header
fscanf, _fscanf_l <stdio.h>
fwscanf, _fwscanf_l <stdio.h> or <wchar.h>

For more compatibility information, see Compatibility.

Example

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

See also

Stream I/O
_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