Поделиться через


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; его аргумент и возвращаемое значение характерные черты.

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

Поскольку нет возможности ограничиваться количество прочитанных символов, получающий и выполняющий ненадежный входных данных легко может привести к переполнению буфера.Взамен рекомендуется использовать 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

См. также

Ссылки

Поток ВВОДА-ВЫВОДА

fgets, fgetws

fputs, fputws

puts, _putws