vsscanf_s、vswscanf_svsscanf_s, vswscanf_s

文字列から書式付きデータを読み込みます。Reads formatted data from a string. これらのバージョンの vsscanf、vswscanf は、「CRT のセキュリティ機能」の説明にあるとおり、セキュリティが強化されたバージョンです。These versions of vsscanf, vswscanf have security enhancements, as described in Security Features in the CRT.

構文Syntax

int vsscanf_s(
   const char *buffer,
   const char *format,
   va_list argptr
);
int vswscanf_s(
   const wchar_t *buffer,
   const wchar_t *format,
   va_list arglist
);

パラメーターParameters

バッファーbuffer
格納されるデータ。Stored data

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

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 were read but not assigned. 戻り値が 0 の場合は、代入されたフィールドがなかったことを示します。A return value of 0 indicates that no fields were assigned. 戻り値はEOFエラーの最初の変換の前に、文字列の末尾に達した場合またはします。The return value is EOF for an error or if the end of the string is reached before the first conversion.

場合バッファーまたは形式は、 NULL 」の説明に従って、ポインター、無効なパラメーター ハンドラーが呼び出されるパラメーターの検証です。If buffer or format is a NULL pointer, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、これらの関数は-1 を返し設定とerrnoEINVALします。If execution is allowed to continue, these functions return -1 and set errno to EINVAL.

エラー コードの詳細については、「errno、_doserrno、_sys_errlist、_sys_nerr」をご覧ください。For information about these and other error codes, see errno, _doserrno, _sys_errlist, and _sys_nerr.

RemarksRemarks

Vsscanf_s関数からデータを読み取るバッファーの各引数で指定されている場所に、 arglist引数リスト。The vsscanf_s function reads data from buffer into the locations that are given by each argument in the arglist argument list. 引数リストの引数に型指定子に対応する型を持つ変数へのポインターを指定する形式します。The arguments in the argument list specify pointers to variables that have a type that corresponds to a type specifier in format. 安全なバージョンとは異なりvsscanf、型フィールド文字を使用する場合は、バッファー サイズのパラメーターは必要なcCsS、またはで囲まれた文字列コントロール セット :operator[] します。Unlike the less secure version vsscanf, a buffer size parameter is required when you use the type field characters c, C, s, S, or string-control sets that are enclosed in []. バッファー サイズ (文字単位) は、バッファー サイズが必要な各バッファーの後に追加パラメーターとして指定する必要があります。The buffer size in characters must be supplied as an additional parameter immediately after each buffer parameter that requires it.

バッファー サイズには、終端 null も含まれます。The buffer size includes the terminating null. 読み取られたトークンがバッファーに確実に収まるように、幅指定フィールドが使用される場合もあります。A width specification field may be used to ensure that the token that's read in will fit into the buffer. 幅指定フィールドが使用されない場合で、読み取られたトークンがバッファーに収まらない場合、そのバッファーには何も書き込まれません。If no width specification field is used, and the token read in is too big to fit in the buffer, nothing is written to that buffer.

詳細については、「scanf_s、_scanf_s_l、wscanf_s、_wscanf_s_l」と「scanf 関数の型フィールド文字」を参照してください。For more information, see scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l and scanf Type Field Characters.

注意

型のサイズのパラメーターが符号なしではなく、 size_tします。The size parameter is of type unsigned, not size_t.

形式引数コントロール入力の解釈のフィールドし、同じ形式し、機能、形式の引数、 scanf_s関数。The format argument controls the interpretation of the input fields and has the same form and function as the format argument for the scanf_s function. 重なり合う文字列間でコピーした場合の動作は未定義です。If copying occurs between strings that overlap, the behavior is undefined.

vswscanf_sのワイド文字バージョンは、 vsscanf_s; 引数vswscanf_sはワイド文字列です。vswscanf_s is a wide-character version of vsscanf_s; the arguments to vswscanf_s are wide-character strings. vsscanf_sマルチバイトの 16 進数の文字を処理しません。vsscanf_s does not handle multibyte hexadecimal characters. vswscanf_s Unicode の全角 16 進数または「互換区域」の文字を処理しません。vswscanf_s does not handle Unicode full-width hexadecimal or "compatibility zone" characters. それ以外の場合、 vswscanf_svsscanf_s動作は同じです。Otherwise, vswscanf_s and vsscanf_s behave identically.

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

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

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
vsscanf_svsscanf_s <stdio.h><stdio.h>
vswscanf_svswscanf_s <stdio.h> または <wchar.h><stdio.h> or <wchar.h>

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

Example

// crt_vsscanf_s.c
// compile with: /W3
// This program uses vsscanf_s to read data items
// from a string named tokenstring, then displays them.

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

int call_vsscanf_s(char *tokenstring, char *format, ...)
{
    int result;
    va_list arglist;
    va_start(arglist, format);
    result = vsscanf_s(tokenstring, format, arglist);
    va_end(arglist);
    return result;
}

int main( void )
{
    char  tokenstring[] = "15 12 14...";
    char  s[81];
    char  c;
    int   i;
    float fp;

    // Input various data from tokenstring:
    // max 80 character string:
    call_vsscanf_s(tokenstring, "%80s", s, _countof(s));
    call_vsscanf_s(tokenstring, "%c", &c, sizeof(char));
    call_vsscanf_s(tokenstring, "%d", &i);
    call_vsscanf_s(tokenstring, "%f", &fp);

    // Output the data read
    printf("String    = %s\n", s);
    printf("Character = %c\n", c);
    printf("Integer:  = %d\n", i);
    printf("Real:     = %f\n", fp);
}
String    = 15
Character = 1
Integer:  = 15
Real:     = 15.000000

関連項目See also

ストリーム入出力Stream I/O
scanf、_scanf_l、wscanf、_wscanf_lscanf, _scanf_l, wscanf, _wscanf_l
sscanf、_sscanf_l、swscanf、_swscanf_lsscanf, _sscanf_l, swscanf, _swscanf_l
sscanf_s、_sscanf_s_l、swscanf_s、_swscanf_s_lsscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l
sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_lsprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
vsscanf、vswscanfvsscanf, vswscanf