_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 );
}
}