gets, _getws

获取 stdin 流的一行。 这些功能的更安全版本可用;请参见 gets_s, _getws_s

重要

此 API 不能在运行时的窗口执行的应用程序。有关更多信息,请参见 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 函数在 buffer读取标准输入流 stdin 的一行并将其存储。 行包含所有字符模式将匹配第一个换行符 (“\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