gets、_getws

从 stdin 流获取线。 有关这些函数的更多安全版本,请参见 gets_s、_getws_s

重要

此 API 不能用于在 Windows 运行时中执行的应用程序。有关详细信息,请参见 CRT functions not supported with /ZW(CRT 函数不支持使用/ZW)。

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

参数

  • buffer
    输入字符串的存储位置。

返回值

如果成功,翻译其参数。 NULL 指针指向错误或文件结尾条件。 使用 ferrorfeof 确定哪个已发生。 如果 buffer 是NULL, 则函数调用无效参数处理程序, 如 参数验证所述. 如果允许执行继续,则这些函数返回 NULL 并将 errno 设置为EINVAL 。

备注

gets 函数从标准输入流 stdin 中读取一行并保存在 buffer中. 行包含所有字符模式将匹配第一个换行符 (“\n”)。 gets 在返回行之前使用 null 字符 (“\0 ")然后替换换行符。 相反,fgets 函数保留换行符。 _getws 是 gets 的宽字符版本, 参数和的返回值都是宽字符字符串。

安全说明安全说明

由于没有办法限制读取的字符数的数量,不受信任的输入很容易导致缓冲区溢出。请改用 fgets。

在 C++ 中,这些函数具有模板重载,以调用这些函数的更新、更安全副本。 有关详细信息,请参阅安全模板重载

一般文本例程映射

TCHAR.H 例程

未定义 _UNICODE & _MBCS

已定义 _MBCS

已定义 _UNICODE

_getts

gets

gets

_getws

要求

例程

必需的标头

gets

<stdio.h>

_getws

<stdio.h> 或 <wchar.h>

有关兼容性的更多信息,请参见兼容性

示例

// crt_gets.c
// compile with: /WX /W3

#include <stdio.h>

int main( void )
{
   char line[21]; // room for 20 chars + '\0'
   gets( line );  // C4996
   // Danger: No way to limit input to 20 chars.
   // Consider using gets_s instead.
   printf( "The line entered was: %s\n", line );
}

请注意输入超过 20 个字符的长度将超出行缓冲区并且很可以会导致程序崩溃。

  

.NET Framework 等效项

System::Console::Read

请参见

参考

流 I/O

fgets、fgetws

fputs、fputws

puts、_putws