_cgets_s、_cgetws_s
更新 : 2007 年 11 月
コンソールから文字列を取得します。この関数は、「CRT のセキュリティ強化」に説明されているように、_cgets と _cgetwsのセキュリティが強化されたバージョンです。
errno_t _cgets_s(
char *buffer,
size_t numberOfElements,
size_t *pSizeRead
);
errno_t _cgetws_s(
wchar_t *buffer
size_t numberOfElements,
size_t *pSizeRead
);
template <size_t size>
errno_t _cgets_s(
char (&buffer)[size],
size_t *pSizeRead
); // C++ only
template <size_t size>
errno_t _cgetws_s(
wchar_t (&buffer)[size],
size_t *pSizeRead
); // C++ only
パラメータ
[出力] buffer
データの格納場所。[入力] numberOfElements
バッファのサイズ (つまり、読み取りの対象となる最大文字数)。1 バイト文字またはワイド文字単位になります。[入力] pSizeRead
実際に読み取られた最大文字数。
戻り値
正常終了した場合の戻り値は 0、エラーが発生した場合はエラー コードです。
エラー条件
buffer |
numberOfElements |
pSizeRead |
Return |
buffer の内容 |
---|---|---|---|---|
NULL |
any |
any |
EINVAL |
n/a |
NULL 以外 |
0 |
any |
EINVAL |
変更されない |
NULL 以外 |
any |
NULL |
EINVAL |
長さ 0 の文字列 |
解説
_cgets_s 関数と _cgetws_s 関数は、コンソールから文字列を読み取り、その文字列 (終端の null を含む) を buffer にコピーします。_cgetws_s はこの関数のワイド文字バージョンであり、文字サイズ以外はこの 2 つの関数の動作は同じです。読み取る文字列の最大サイズは、numberOfElements パラメータとして渡されます。このサイズには終端の null 用に追加の文字を含めるようにしてください。実際に読み取られた文字数は、pSizeReadに格納されます。
演算中またはパラメータの検証中にエラーが発生した場合は、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラが呼び出されます。実行の継続が許可された場合、errno が EINVAL に設定され、EINVAL が返されます。
C++ では、これらの関数の使用はテンプレートのオーバーロードによって簡素化されます。オーバーロードでは、バッファ長を自動的に推論できる (サイズの引数を指定する必要がなくなる) だけでなく、古くてセキュリティが万全ではない関数を新しく安全な関数に自動的に置き換えることができます。詳細については、「セキュリティ保護されたテンプレート オーバーロード」を参照してください。
汎用テキスト ルーチンのマップ
Tchar.h のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_cgetts_s |
_cgets_s |
_cgets_s |
_cgetws_s |
必要条件
ルーチン |
必須ヘッダー |
---|---|
_cgets_s |
<conio.h> |
_cgetws_s |
<conio.h> または <wchar.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
.NET Framework の相当するアイテム
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。