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