_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 の型指定子に対応する型の変数へのポインターにする必要があります。 この形式は入力フィールドの解釈を制御し、関数のパラメーターと同じ形式と関数 formatscanf 持ちます。 _cscanf通常は入力文字をエコーしますが、最後の呼び出し_ungetchが .

この関数は、パラメーターを検証します。 形式が指定されている場合、「NULLパラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、 errnoEINVAL に設定され、関数が 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