_cgets_s
, _cgetws_s
從主控台取得字元字串。 這些版本的 _cgets
和 _cgetws
具有安全性增強功能,如CRT中的安全性功能中所述。
重要
這個 API 不能用於在 Windows 執行階段中執行的應用程式。 如需詳細資訊,請參閱 CRT functions not supported in Universal Windows Platform apps (通用 Windows 平台應用程式中不支援的 CRT 函式)。
語法
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
緩衝區的大小,以單一位元組或寬字元為單位,也是要讀取的字元數上限。
pSizeRead
實際讀取的字元數。
傳回值
如果成功則傳回值為零;否則,如果發生失敗則為錯誤碼。
錯誤條件
buffer |
numberOfElements |
pSizeRead |
傳回 | buffer 的內容。 |
---|---|---|---|---|
NULL |
任意 | 任意 | EINVAL |
n/a |
非 NULL |
零 | 任意 | EINVAL |
未修改 |
非 NULL |
任意 | NULL |
EINVAL |
零長度字串 |
備註
_cgets_s
和 _cgetws_s
從主控台讀取字串和將字串 (包括 null 結束字元) 複製到 buffer
。 _cgetws_s
是函式的寬字元版本;除了字元大小之外,這兩個函式行為相同。 要讀取的資料大小的最大值會做為 numberOfElements
參數傳入。 這個大小應該包含結束的 null 之額外字元。 實際讀取的字元數會放在 pSizeRead
。
如果在作業期間或驗證參數時發生錯誤,則會叫用無效的參數處理程式,如參數驗證中所述。 如果允許繼續執行, errno
則會設定為 EINVAL
,並 EINVAL
傳回 。
在C++中,範本多載會簡化使用這些函式。 多載可以自動推斷緩衝區長度,而不需要指定 size 自變數。 他們也可以使用較新的、更安全的對應專案來自動取代較舊、較不安全的函式。 如需詳細資訊,請參閱安全範本多載。
這些函式的偵錯連結庫版本會先將緩衝區填入0xFE。 若要停用此行為,請使用 _CrtSetDebugFillThreshold
。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
一般文字常式對應
Tchar.h 常式 | _UNICODE 和 _MBCS 未定義 |
_MBCS 已定義 |
_UNICODE 已定義 |
---|---|---|---|
_cgetts_s |
_cgets_s |
_cgets_s |
_cgetws_s |
需求
常式 | 必要的標頭 |
---|---|
_cgets_s |
<conio.h> |
_cgetws_s |
<conio.h> 或 <wchar.h> |
如需相容性詳細資訊,請參閱相容性。