fscanf、_fscanf_l、fwscanf、_fwscanf_lfscanf, _fscanf_l, fwscanf, _fwscanf_l

書式付きデータをストリームから読み出します。Read formatted data from a stream. これらの関数のセキュリティを強化したバージョンを使用できます。「fscanf_s、_fscanf_s_l、fwscanf_s、_fwscanf_s_l」を参照してください。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

streamstream
FILE 構造体へのポインター。Pointer to FILE structure.

formatformat
書式指定文字列。Format-control string.

argumentargument
省略可能な引数。Optional arguments.

localelocale
使用するロケール。The locale to use.

戻り値Return Value

これらの関数は、正常に変換および代入されたフィールドの数を返します。読み込まれただけで代入されなかったフィールドは戻り値には含まれません。Each of these functions returns the number of fields successfully converted and assigned; the return value does not include fields that were read but not assigned. 戻り値が 0 の場合は、代入されたフィールドがなかったことを示します。A return value of 0 indicates that no fields were assigned. エラーが発生した場合、または戻り値は、ファイル ストリームの末尾に達した場合は、最初の変換の前に、 EOFfscanffwscanfします。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. 場合ストリームまたは形式null ポインターの場合で説明されているとおり、無効なパラメーター ハンドラーが呼び出されますパラメーターの検証です。If stream or format is a null pointer, the invalid parameter handler is invoked, as described in Parameter Validation. これらの関数を返すかどうかは、引き続き実行が許可された、 EOF設定とerrnoEINVALします。If execution is allowed to continue, these functions return EOF and set errno to EINVAL.

RemarksRemarks

Fscanf関数は、の現在位置からデータを読み取るストリームで指定した位置に引数(ある場合)。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. 形式コントロール入力の解釈のフィールドし、同じ形式し、機能、形式引数scanf; を参照してくださいscanfの説明形式します。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のワイド文字バージョンは、 fscanf; 引数 format fwscanfはワイド文字列です。fwscanf is a wide-character version of fscanf; the format argument to fwscanf is a wide-character string. ストリームが ANSI モードで開かれている場合、これらの関数の動作は同じになります。These functions behave identically if the stream is opened in ANSI mode. fscanf UNICODE ストリームからの入力を現在サポートされていません。fscanf doesn't currently support input from a UNICODE stream.

これらの関数のバージョン、 _l現在のスレッド ロケールの代わりに渡されたロケール パラメーターを使用する点を除いて、サフィックスは同じです。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 のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_ftscanf_ftscanf fscanffscanf fscanffscanf fwscanffwscanf
_ftscanf_l_ftscanf_l _fscanf_l_fscanf_l _fscanf_l_fscanf_l _fwscanf_l_fwscanf_l

詳細については、次を参照してください。 scanf 関数と wscanf 関数の書式指定フィールドします。For more information, see Format Specification Fields - scanf functions and wscanf Functions.

必要条件Requirements

関数Function 必須ヘッダーRequired header
fscanf_fscanf_lfscanf, _fscanf_l <stdio.h><stdio.h>
fwscanf_fwscanf_lfwscanf, _fwscanf_l <stdio.h> または <wchar.h><stdio.h> or <wchar.h>

互換性の詳細については、「 互換性」を参照してください。For additional 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_cscanf, _cscanf_l, _cwscanf, _cwscanf_l
fprintf、_fprintf_l、fwprintf、_fwprintf_lfprintf, _fprintf_l, fwprintf, _fwprintf_l
scanf、_scanf_l、wscanf、_wscanf_lscanf, _scanf_l, wscanf, _wscanf_l
sscanf、_sscanf_l、swscanf、_swscanf_lsscanf, _sscanf_l, swscanf, _swscanf_l
fscanf_s、_fscanf_s_l、fwscanf_s、_fwscanf_s_lfscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l