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