_cgets、_cgetws_cgets, _cgetws

コンソールから文字列を取得します。Gets a character string from the console. これらの関数のセキュリティを強化したバージョンを使用できます。「 _cgets_s, _cgetws_s」を参照してください。More secure versions of these functions are available; see _cgets_s, _cgetws_s.


これらは古い関数です。These functions are obsolete. Visual Studio 2015 以降では、CRT で使用できません。Beginning in Visual Studio 2015, they are not available in the CRT. これらの関数のセキュリティを強化したバージョン _cgets_s および _cgetws_s は、引き続き使用できます。The secure versions of these functions, _cgets_s and _cgetws_s, are still available. これらの代替関数の詳細については、「 _cgets_s, _cgetws_s」を参照してください。For information on these alternative functions, see _cgets_s, _cgetws_s.


この API は、Windows ランタイムで実行するアプリケーションでは使用できません。This API cannot be used in applications that execute in the Windows Runtime. 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。For more information, see CRT functions not supported in Universal Windows Platform apps.


char *_cgets(
   char *buffer
wchar_t *_cgetws(
   wchar_t *buffer
template <size_t size>
char *_cgets(
   char (&buffer)[size]
); // C++ only
template <size_t size>
wchar_t *_cgetws(
   wchar_t (&buffer)[size]
); // C++ only


データの格納場所。Storage location for data.

戻り値Return Value

_cgets_cgetws は文字列の先頭である buffer[2]へのポインターを返します。_cgets and _cgetws return a pointer to the start of the string, at buffer[2]. bufferNULL の場合は、「パラメーターの検証」で説明されているように、これらの関数は無効なパラメーター ハンドラーを呼び出します。If buffer is NULL, these functions invoke the invalid parameter handler, as described in Parameter Validation. 実行の継続が許可された場合、これらは NULL を返し、errnoEINVAL に設定します。If execution is allowed to continue, they return NULL and set errno to EINVAL.


これらの関数は、コンソールから文字列を読み込み、 bufferが指す位置に文字列とその長さを格納します。These functions read a string of characters from the console and store the string and its length in the location pointed to by buffer. buffer パラメーターは文字配列へのポインターである必要があります。The buffer parameter must be a pointer to a character array. 配列の最初の要素 ( buffer[0]) には、読み取る文字列の最大長 (文字数) を格納します。The first element of the array, buffer[0], must contain the maximum length (in characters) of the string to be read. 配列は、文字列、終端の null 文字 ('\0')、およびその他の 2 バイト分を格納するのに十分な要素を持つ必要があります。The array must contain enough elements to hold the string, a terminating null character ('\0'), and 2 additional bytes. 関数は、文字をキャリッジ リターンとラインフィード (CR-LF) の組み合わせが現れるか、指定した文字数を読み取るまで文字を読み取ります。The function reads characters until a carriage return-line feed (CR-LF) combination or the specified number of characters is read. 文字列は buffer[2]を先頭として格納されます。The string is stored starting at buffer[2]. 関数が CR-LF を読み取ると、null 文字 ('\0') を格納します。If the function reads a CR-LF, it stores the null character ('\0'). 次に、関数は 2 番目の配列要素である buffer[1]に文字列の実際の長さを格納します。The function then stores the actual length of the string in the second array element, buffer[1].

コンソール ウィンドウでは、 _cgets または _cgetws が呼び出されたときにはすべての編集キーがアクティブになっているため、F3 キーを押すと最後に入力したエントリが繰り返されます。Because all editing keys are active when _cgets or _cgetws is called while in a console window, pressing the F3 key repeats the last entered entry.

C++ では、これらの関数にテンプレートのオーバーロードがあります。このオーバーロードは、これらの関数に対応するセキュリティで保護された新しい関数を呼び出します。In C++, these functions have template overloads that invoke the newer, secure counterparts of these functions. 詳細については、「 Secure Template Overloads」を参照してください。For more information, see Secure Template Overloads.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

Tchar.h のルーチンTchar.h routine _UNICODE および _MBCS が未定義の場合_UNICODE and _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_cgetts _cgets _cgets _cgetws


ルーチンによって返される値Routine 必須ヘッダーRequired header
_cgets <conio.h><conio.h>
_cgetws <conio.h> または <wchar.h><conio.h> or <wchar.h>

互換性の詳細については、「 互換性」を参照してください。For more compatibility information, see Compatibility.


// crt_cgets.c
// compile with: /c /W3
// This program creates a buffer and initializes
// the first byte to the size of the buffer. Next, the
// program accepts an input string using _cgets and displays
// the size and text of that string.

#include <conio.h>
#include <stdio.h>
#include <errno.h>

int main( void )
   char buffer[83] = { 80 };  // Maximum characters in 1st byte
   char *result;

   printf( "Input line of text, followed by carriage return:\n");

   // Input a line of text:
   result = _cgets( buffer ); // C4996
   // Note: _cgets is deprecated; consider using _cgets_s
   if (!result)
      printf( "An error occurred reading from the console:"
              " error code %d\n", errno);
      printf( "\nLine length = %d\nText = %s\n",
              buffer[1], result );

      A line of input.Input line of text, followed by carriage return:
Line Length = 16
Text = A line of input.

関連項目See also

コンソール入出力とポート入出力Console and Port I/O
_getch、_getwch_getch, _getwch