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


gets_s, _getws_s

Получает строку из потока stdin . Эти версии имеют _getwsулучшения безопасности, как описано в функциях getsбезопасности в CRT.

Синтаксис

char *gets_s(
   char *buffer,
   size_t sizeInCharacters
);
wchar_t *_getws_s(
   wchar_t *buffer,
   size_t sizeInCharacters
);
template <size_t size>
char *gets_s( char (&buffer)[size] ); // C++ only

template <size_t size>
wchar_t *_getws_s( wchar_t (&buffer)[size] ); // C++ only

Параметры

buffer
Место хранения входной строки.

sizeInCharacters
Размер буфера.

Возвращаемое значение

Возвращает значение buffer в случае успешного выполнения. Указатель NULL указывает на ошибку или конец файла. Используйте ferror или feof определите, какой из них произошел.

Замечания

Функция gets_s считывает строку из стандартного потока ввода stdin и сохраняет ее в буфере buffer. Строка состоит из всех символов до первого нового символа ('\n). gets_s затем заменяет новый символ null ('\0) перед возвратом строки. Напротив, функция fgets_s сохраняет символ новой строки.

Если первый символ считывается в конце файла, возвращается пустой символ в начале bufferи NULL возвращается.

_getws_s — это версия функции gets_s для расширенных символов; ее аргумент и возвращаемое значение являются строками расширенных символов.

NULL sizeInCharacters Если buffer значение равно нулю или равно нулю, или если буфер слишком мал для хранения входной строки и конца null, эти функции вызывают обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если выполнение может быть продолжено, эти функции возвращают NULL и устанавливают параметр errno в значение ERANGE.

В C++ использование данных функций упрощено наличием шаблонных перегрузок; перегруженные методы могут автоматически определять длину буфера (что исключает необходимость указания аргумента с размером буфера), а также они могут автоматически заменять более старые, незащищенные функции их новыми безопасными аналогами. Дополнительные сведения см. в разделе "Безопасные перегрузки шаблонов".

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

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

TCHAR.H рутина _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_getts_s gets_s gets_s _getws_s

Требования

Маршрут Обязательный заголовок
gets_s <stdio.h>
_getws_s <stdio.h> или <wchar.h>

Консоль не поддерживается в приложениях универсальная платформа Windows (UWP). Стандартные дескрипторы потока, связанные с консолью, stdinstdoutи stderr, должны быть перенаправлены перед тем, как функции времени выполнения C могут использовать их в приложениях UWP. Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_gets_s.c
// This program retrieves a string from the stdin and
// prints the same string to the console.

#include <stdio.h>

int main( void )
{
   char line[21]; // room for 20 chars + '\0'
   gets_s( line, 20 );
   printf( "The line entered was: %s\n", line );
}
Hello there!
The line entered was: Hello there!

См. также

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