次の方法で共有


_cscanf_s_cscanf_s_l_cwscanf_s_cwscanf_s_l

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

重要

この 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 の場合は、フィールドが割り当てられていないことを意味します。

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

解説

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

scanf ファミリの他のセキュリティで保護されたバージョンの関数と同様に、_cscanf_s_cwscanf_sには、型フィールド文字 cC、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

関連項目

コンソール入出力とポート入出力
_cprintf_cprintf_l_cwprintf_cwprintf_l
fscanf_s_fscanf_s_lfwscanf_s_fwscanf_s_l
scanf_s_scanf_s_lwscanf_s_wscanf_s_l
sscanf_s_sscanf_s_lswscanf_s_swscanf_s_l