共用方式為


_cgets、_cgetws

從主控台取得字元。 更多這些函式的可用安全版本,請參閱 _cgets_s、_cgetws_s

重要

這個應用程式開發介面不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 /ZW 不支援 CRT 函式

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

參數

  • buffer
    資料儲存位置

傳回值

_cgets 和 _cgetws 傳回位在 buffer[2] 中,指向字串開頭的指標。 如果 buffer 為 NULL,則會叫用無效參數處理常式,如 參數驗證 中所述。 如果允許繼續執行,它們會傳回 NULL,並將 errno 設為 EINVAL。

備註

這些函式讀取請控台的字串字元,並將字串和其長度儲存於指向的 buffer。 buffer 參數必須為指向字元陣列的指標。 陣列的第一個項目— buffer[0],必須包含要讀取字串 (以字元形式) 的最大長度。 陣列必須包含足夠的元素以保留字串、一個結束的 null 字元 (「\ 0」) 和兩個額外的位元組。 在托架傳回行摘要 (CR-LF) 組合字元或指定讀入字元數之後,函式會停止讀取。 字串從 buffer[2] 開始儲存。 如果函式讀取 CR-LF,則儲存 null 字元 (「\ 0 」)。 然後函式會在第二個陣列元素— buffer[1] ,儲存字串的實際長度。

當在主控台視窗呼叫 _cgets 或_cgetws 時,由於已啟用所有的編輯按鈕,所以在按下 F3 按鍵後會重複最後的輸入。

在 C++ 中,這些函式具有多載樣板,可以叫用更新、更安全的這些函式的相對版本。 如需詳細資訊,請參閱安全範本多載

一般文字常式對應

Tchar.h 常式

未定義 _UNICODE and _MBCS

已定義 _MBCS

已定義 _UNICODE

_cgetts

_cgets

_cgets

_cgetws

需求

常式

必要的標頭

_cgets

<conio.h>

_cgetws

<conio.h> 或 <wchar.h>

如需相容性的詳細資訊,請參閱相容性

範例

// 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);
   }
   else
   {   
      printf( "\nLine length = %d\nText = %s\n",
              buffer[1], result );
   }
}
  

請參閱

參考

主控台和連接埠 I/O

_getch、_getwch