_cscanf
, _cscanf_l
, _cwscanf
, _cwscanf_l
コンソールから書式化されたデータを読み出します。 これらの関数のセキュリティを強化したバージョンを使用できます。「_cscanf_s
、_cscanf_s_l
、_cwscanf_s
、_cwscanf_s_l
」を参照してください。
Note
Visual Studio 2015 では、printf
および scanf
ファミリの関数は inline
として宣言され、<stdio.h>
および <conio.h>
ヘッダーに移動されました。 古いコードを移行する場合は、これらの関数に関連してリンカー エラー LNK2019が表示されることがあります。 詳細については、Visual C++ 2003 から 2015 の変更履歴に関するページを参照してください。
重要
この API は、Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。
構文
int _cscanf(
const char *format [,
argument] ...
);
int _cscanf_l(
const char *format,
_locale_t locale [,
argument] ...
);
int _cwscanf(
const wchar_t *format [,
argument] ...
);
int _cwscanf_l(
const wchar_t *format,
_locale_t locale [,
argument] ...
);
パラメーター
format
書式指定文字列。
argument
省略可能なパラメーター。
locale
使用するロケール。
戻り値
正常に変換され、割り当てられたフィールドの数。 戻り値に、読み取られたが、割り当てられなかったフィールドは含まれません。 ファイルの終端で読み取ろうとした場合、戻り値は、EOF
です。 EOF
また、オペレーティング システムのコマンド ライン レベルでキーボード入力がリダイレクトされたときにも返すことができます。 戻り値が 0 の場合は、フィールドが割り当てられていないことを意味します。
解説
_cscanf
関数は、コンソールからデータを argument
で指定した位置に直接読み込みます。 この _getche
関数は、文字の読み取りに使用されます。 省略可能なパラメーターは、それぞれ、format
の型指定子に対応する型の変数へのポインターにする必要があります。 この形式は入力フィールドの解釈を制御し、関数のパラメーターと同じ形式と関数 format
を scanf
持ちます。 _cscanf
通常は入力文字をエコーしますが、最後の呼び出し_ungetch
が .
この関数は、パラメーターを検証します。 形式が指定されている場合、「NULL
パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、 errno
が EINVAL
に設定され、関数が EOF
のセキュリティが強化されたバージョンです。
これらの関数のうち _l
サフィックスが付けられたバージョンは、現在のスレッド ロケールの代わりに渡されたロケール パラメーターを使用する点を除いて同じです。
汎用テキスト ルーチンのマップ
TCHAR.H のルーチン | _UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
---|---|---|---|
_tcscanf |
_cscanf |
_cscanf |
_cwscanf |
_tcscanf_l |
_cscanf_l |
_cscanf_l |
_cwscanf_l |
必要条件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_cscanf , _cscanf_l |
<conio.h> |
_cwscanf , _cwscanf_l |
<conio.h> または <wchar.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
// crt_cscanf.c
// compile with: /c /W3
/* This program prompts for a string
* and uses _cscanf to read in the response.
* Then _cscanf returns the number of items
* matched, and the program displays that number.
*/
#include <stdio.h>
#include <conio.h>
int main( void )
{
int result, i[3];
_cprintf_s( "Enter three integers: ");
result = _cscanf( "%i %i %i", &i[0], &i[1], &i[2] ); // C4996
// Note: _cscanf is deprecated; consider using _cscanf_s instead
_cprintf_s( "\r\nYou entered " );
while( result-- )
_cprintf_s( "%i ", i[result] );
_cprintf_s( "\r\n" );
}
1 2 3
Enter three integers: 1 2 3
You entered 3 2 1
関連項目
コンソールとポート I/O
_cprintf
, _cprintf_l
, _cwprintf
, _cwprintf_l
fscanf
, _fscanf_l
, fwscanf
, _fwscanf_l
scanf_s
, _scanf_s_l
, wscanf_s
, _wscanf_s_l
sscanf
, _sscanf_l
, swscanf
, _swscanf_l
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示