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). Стандартные дескрипторы потока, связанные с консолью, stdin
stdout
и 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