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

一連stream
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. エラーが発生した場合、または最初の変換の前にファイルストリームの末尾に到達した場合、 fscanffwscanfの戻り値はEOFになります。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. Streamまたはformatが 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. formatは、入力フィールドの解釈を制御し、 scanfformat引数と同じ形式と機能を持ちます。形式の説明については、「 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のワイド文字バージョンです。fwscanfの format 引数は、ワイド文字列です。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 (_s)_ftscanf fscanffscanf fscanffscanf fwscanffwscanf
ftscanf_l (_d)_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