vfscanf、vfwscanfvfscanf, vfwscanf

ストリームから書式化されたデータを読み出します。Reads formatted data from a stream. これらの関数のセキュリティを強化したバージョンを使用できます。「vfscanf_s、vfwscanf_s」を参照してください。More secure versions of these functions are available; see vfscanf_s, vfwscanf_s.

構文Syntax

int vfscanf(
   FILE *stream,
   const char *format,
   va_list argptr
);
int vfwscanf(
   FILE *stream,
   const wchar_t *format,
   va_list argptr
);

パラメーターParameters

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

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

arglistarglist
可変個引数リスト。Variable argument list.

戻り値Return Value

これらの関数は、正常に変換および代入されたフィールドの数を返します。読み込まれただけで代入されなかったフィールドは戻り値には含まれません。Each of these functions returns the number of fields that are successfully converted and assigned; the return value does not include fields that are read but not assigned. 戻り値が 0 の場合は、代入されたフィールドがなかったことを示します。A return value of 0 indicates that no fields were assigned. エラーが発生した場合、または戻り値は、ファイル ストリームの末尾に達した場合は、最初の変換の前に、 EOFvfscanfvfwscanfします。If an error occurs, or if the end of the file stream is reached before the first conversion, the return value is EOF for vfscanf and vfwscanf.

これらの関数では、パラメーターの検証が行われます。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

Vfscanf関数は、の現在位置からデータを読み取るストリームで指定されている場所に、 arglist引数リスト。The vfscanf function reads data from the current position of stream into the locations that are given by the arglist argument list. リスト内の各引数は型指定子に対応する型の変数へのポインターである必要があります形式します。Each argument in the list 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.

vfwscanfのワイド文字バージョンは、 vfscanf; 引数 format vfwscanfはワイド文字列です。vfwscanf is a wide-character version of vfscanf; the format argument to vfwscanf is a wide-character string. ストリームが ANSI モードで開かれている場合、これらの関数の動作は同じになります。These functions behave identically if the stream is opened in ANSI mode. vfscanf UNICODE ストリームからの入力をサポートしていません。vfscanf doesn't support input from a UNICODE stream.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_vftscanf_vftscanf vfscanfvfscanf vfscanfvfscanf vfwscanfvfwscanf

詳細については、「Format Specification Fields: scanf and wscanf Functions」(scanf 関数と wscanf 関数の書式指定フィールド) をご覧ください。For more information, see Format Specification Fields: scanf and wscanf Functions.

必要条件Requirements

関数Function 必須ヘッダーRequired header
vfscanfvfscanf <stdio.h><stdio.h>
vfwscanfvfwscanf <stdio.h> または <wchar.h><stdio.h> or <wchar.h>

互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.

Example

// crt_vfscanf.c
// compile with: /W3
// This program writes formatted
// data to a file. It then uses vfscanf to
// read the various data back from the file.

#include <stdio.h>
#include <stdarg.h>

FILE *stream;

int call_vfscanf(FILE * istream, char * format, ...)
{
    int result;
    va_list arglist;
    va_start(arglist, format);
    result = vfscanf(istream, format, arglist);
    va_end(arglist);
    return result;
}

int main(void)
{
    long l;
    float fp;
    char s[81];
    char c;

    if (fopen_s(&stream, "vfscanf.out", "w+") != 0)
    {
        printf("The file vfscanf.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:
        call_vfscanf(stream, "%s %ld %f%c", s, &l, &fp, &c);

        // 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
vfscanf_s、vfwscanf_svfscanf_s, vfwscanf_s