_snscanf、_snscanf_l、_snwscanf、_snwscanf_l_snscanf, _snscanf_l, _snwscanf, _snwscanf_l

指定した長さの書式付きデータを文字列から読み出します。Reads formatted data of a specified length from a string. これらの関数のセキュリティを強化したバージョンを使用できます。「_snscanf_s、_snscanf_s_l、_snwscanf_s、_snwscanf_s_l」をご覧ください。More secure versions of these functions are available; see _snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l.

構文Syntax

int __cdecl _snscanf(
   const char * input,
   size_t length,
   const char * format,
   ...
);
int __cdecl _snscanf_l(
   const char * input,
   size_t length,
   const char * format,
   locale_t locale,
   ...
);
int __cdecl _snwscanf(
   const wchar_t * input,
   size_t length,
   const wchar_t * format,
   ...
);
int __cdecl _snwscanf_l(
   const wchar_t * input,
   size_t length,
   const wchar_t * format,
   locale_t locale,
   ...
);

パラメーターParameters

inputinput
チェックする入力文字列。Input string to examine.

lengthlength
入力時に調べる文字数。Number of characters to examine in input.

formatformat
1 つまたは複数の書式指定子。One or more format specifiers.

......
形式の書式指定子によって入力文字列から抽出された値を格納するために使用される省略可能な変数。Optional variables that will be used to store the values extracted from the input string by the format specifiers in format.

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

戻り値Return Value

これらの関数は、正常に変換および代入されたフィールドの数を返します。読み込まれただけで代入されなかったフィールドは戻り値には含まれません。Both 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. エラーの場合、または最初の変換の前に文字列の末尾に到達した場合、戻り値はEOFになります。The return value is EOF for an error or if the end of the string is reached before the first conversion. 詳細については、sscanf を参照してくださいFor more information, see sscanf.

InputまたはformatNULLポインターの場合、またはlengthが0以下の場合は、「パラメーターの検証」で説明されているように、無効なパラメーターハンドラーが呼び出されます。If input or format is a NULL pointer, or if length is less than or equal to zero, 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.

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

RemarksRemarks

この関数は、入力文字列から調べる必要がある固定数の文字を指定できる点を除いて、 sscanfに似ています。This function is like sscanf except that it provides the ability to specify a fixed number of characters to examine from the input string. 詳細については、sscanf を参照してくださいFor more information, see sscanf.

_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 and _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_sntscanf_sntscanf _snscanf_snscanf _snscanf_snscanf _snwscanf_snwscanf
sntscanf_l (_d)_sntscanf_l _snscanf_l_snscanf_l _snscanf_l_snscanf_l _snwscanf_l_snwscanf_l

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
snscanf_t (_l)_snscanf, _snscanf_l <stdio.h><stdio.h>
_snwscanfsnwscanf_l_snwscanf, _snwscanf_l <stdio.h> または <wchar.h><stdio.h> or <wchar.h>

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

Example

// crt_snscanf.c
// compile with: /W3

#include <stdio.h>
int main( )
{
   char  str1[] = "15 12 14...";
   wchar_t  str2[] = L"15 12 14...";
   char  s1[3];
   wchar_t  s2[3];
   int   i;
   float fp;

   i = _snscanf( str1, 6,  "%s %f", s1, &fp); // C4996
   // Note: _snscanf is deprecated; consider using _snscanf_s instead
   printf("_snscanf converted %d fields: ", i);
   printf("%s and %f\n", s1, fp);

   i = _snwscanf( str2, 6,  L"%s %f", s2, &fp); // C4996
   // Note: _snwscanf is deprecated; consider using _snwscanf_s instead
   wprintf(L"_snwscanf converted %d fields: ", i);
   wprintf(L"%s and %f\n", s2, fp);
}
_snscanf converted 2 fields: 15 and 12.000000
_snwscanf converted 2 fields: 15 and 12.000000

関連項目See also

scanf 関数の文字幅指定scanf Width Specification