gets, _getws

Получает строку из потока stdin. Существуют более безопасные версии этих функций; см. раздел gets_s, _getws_s.

Важно!

Этот API невозможно использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в статье Функции 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 говорит об ошибке или конце файла. Используйте ferror или feof для определения того, что именно произошло. Если параметр buffer имеет значение NULL, вызывается обработчик недопустимых параметров, как описано в разделе Проверка параметров. Если продолжение выполнения разрешено, эти функции возвращают NULL и устанавливают для errno значение EINVAL.

Заметки

Функция gets считывает строку из стандартного потока ввода stdin и сохраняет его в buffer. Строка состоит из всех символов до первого символа новой строки ('\n'). gets затем заменяет символ новой строки на нулевой символ ('\0') перед тем, как вернуть строку. Напротив, функция fgets сохраняет символ новой строки. _getws — это версия функции gets с расширенными символами; ее аргумент и возвращаемое значение являются строками расширенных символов.

Примечание о безопасностиПримечание по безопасности

Поскольку нет возможности ограничить количество прочитанных 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 );
}

Обратите внимание, что ввод более двадцати символов переполнит буфер строки и почти наверняка вызовет сбой программы.

  

Эквивалент в .NET Framework

System::Console::Read

См. также

Ссылки

Потоковый ввод-вывод

fgets, fgetws

fputs, fputws

puts, _putws