_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l

コンソールから書式化されたデータを読み出します。 これらのより安全なバージョンの 、 _cscanf_l_cwscanf_cwscanf_lCRT_cscanfセキュリティ機能で説明されているように、セキュリティが強化されています。

重要

この API は、Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。

構文

int _cscanf_s(
   const char *format [,
   argument] ...
);
int _cscanf_s_l(
   const char *format,
   _locale_t locale [,
   argument] ...
);
int _cwscanf_s(
   const wchar_t *format [,
   argument] ...
);
int _cwscanf_s_l(
   const wchar_t *format,
   _locale_t locale [,
   argument] ...
);

パラメーター

format
書式指定文字列。

argument
省略可能なパラメーター。

locale
使用するロケール。

戻り値

正常に変換され、割り当てられたフィールドの数。 戻り値に、読み取られたが、割り当てられなかったフィールドは含まれません。 ファイルの終端で読み取ろうとした場合、戻り値は、EOF です。 EOFまた、オペレーティング システムのコマンド ライン レベルでキーボード入力がリダイレクトされたときにも返すことができます。 戻り値が 0 の場合は、フィールドが割り当てられていないことを意味します。

これらの関数では、パラメーターの検証が行われます。 null ポインターの場合format、「パラメーターの検証」で説明されているように、これらの関数は無効なパラメーター ハンドラーを呼び出します。 実行を続行できる場合、これらの関数は 、を返 EOFし、 errno 次に EINVAL設定されます。

解説

_cscanf_s 関数は、コンソールからデータを argument で指定した位置に直接読み込みます。 この _getche 関数は、文字の読み取りに使用されます。 省略可能なパラメーターは、それぞれ、format の型指定子に対応する型の変数へのポインターにする必要があります。 この形式は入力フィールドの解釈を制御し、関数のパラメーターと同じ形式と関数 formatscanf_s 持ちます。 _cscanf_s通常は入力文字をエコーしますが、最後の呼び出し_ungetchが .

ファミリ内の他のセキュリティで保護されたバージョンの関数と同様にscanf、型フィールド文字 c_cscanf_s C、sS、および [のサイズ引数が必要です。_cwscanf_s 詳細については、「scanf 関数の文字幅指定」を参照してください。

Note

サイズ パラメーターは unsigned 型ではなく、size_t 型です。

これらの関数のうち _l サフィックスが付けられたバージョンは、現在のスレッド ロケールの代わりに渡されたロケール パラメーターを使用する点を除いて同じです。

汎用テキスト ルーチンのマップ

TCHAR.H のルーチン _UNICODE_MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_tcscanf_s _cscanf_s _cscanf_s _cwscanf_s
_tcscanf_s_l _cscanf_s_l _cscanf_s_l _cwscanf_s_l

必要条件

ルーチンによって返される値 必須ヘッダー
_cscanf_s, _cscanf_s_l <conio.h>
_cwscanf_s, _cwscanf_s_l <conio.h> または <wchar.h>

互換性の詳細については、「 Compatibility」を参照してください。

ライブラリ

C ランタイム ライブラリのすべてのバージョン。

// crt_cscanf_s.c
// compile with: /c
/* This program prompts for a string
* and uses _cscanf_s to read in the response.
* Then _cscanf_s returns the number of items
* matched, and the program displays that number.
*/

#include <stdio.h>
#include <conio.h>

int main( void )
{
   int result, n[3];
   int i;

   result = _cscanf_s( "%i %i %i", &n[0], &n[1], &n[2] );
   _cprintf_s( "\r\nYou entered " );
   for( i=0; i<result; i++ )
      _cprintf_s( "%i ", n[i] );
   _cprintf_s( "\r\n" );
}
1 2 3
You entered 1 2 3

関連項目

コンソールとポート I/O
_cprintf, _cprintf_l, _cwprintf, _cwprintf_l
fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l
scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l
sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l