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


gets, _getws

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

Внимание

Эти функции устарели. Начиная с Visual Studio 2015 они недоступны в CRT. Безопасные версии этих функций gets_s и _getws_sпо-прежнему доступны. Дополнительные сведения об этих альтернативных функциях см. в разделе gets_s. _getws_s

Внимание

Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.

Синтаксис

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++ эти функции имеют шаблонные перегрузки, которые вызывают более новые и безопасные аналоги этих функций. Дополнительные сведения см. в разделе "Безопасные перегрузки шаблонов".

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Сопоставления подпрограмм универсального текста

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


Hello there!The line entered was: Hello there!

См. также

Потоковый ввод-вывод
fgets, fgetws
fputs, fputws
puts, _putws