_cscanf_s
, _cscanf_s_l
, _cwscanf_s
, _cwscanf_s_l
コンソールから書式化されたデータを読み出します。 これらのより安全なバージョンの 、 _cscanf_l
_cwscanf
_cwscanf_l
CRT の_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
の型指定子に対応する型の変数へのポインターにする必要があります。 この形式は入力フィールドの解釈を制御し、関数のパラメーターと同じ形式と関数 format
を scanf_s
持ちます。 _cscanf_s
通常は入力文字をエコーしますが、最後の呼び出し_ungetch
が .
ファミリ内の他のセキュリティで保護されたバージョンの関数と同様にscanf
、型フィールド文字 c、 _cscanf_s
C、s、S、および [のサイズ引数が必要です。_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
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示