_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
の型指定子に対応する型の変数へのポインターにする必要があります。 書式は入力フィールドの解釈を制御し、scanf
関数のformat
パラメーターと同じ形式と関数を持ちます。 通常、 _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
関連項目
コンソール入出力とポート入出力
_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