%>
从控制台获取字符串。 这些版本的 _cgets
和 _cgetws
具有安全增强功能,如 CRT 中的安全功能中所述。
重要
此 API 不能用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 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 |
any | 任意 | EINVAL |
不适用 |
非 NULL |
零 | any | EINVAL |
未修改 |
非 NULL |
any | 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> |
有关兼容性的详细信息,请参阅 兼容性。
另请参阅
控制台和端口 I/O
%>