Share via


_cscanf、_cscanf_l、_cwscanf、_cwscanf_l

更新 : 2007 年 11 月

書式化されたデータをコンソールから読み取ります。これらの関数のセキュリティを強化したバージョンについては、「_cscanf_s、_cscanf_s_l、_cwscanf_s、_cwscanf_s_l」を参照してください。

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 です。これは、キーボード入力がオペレーティング システムのコマンド ライン レベルでリダイレクトされるときに発生します。戻り値が 0 の場合は、フィールドが代入されなかったことを意味します。

解説

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

この関数は、パラメータを検証します。format が 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>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

// 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