gets_s, _getws_s
Получает строку из потока stdin. В этих версиях gets, _getws усовершенствована безопасность, как описано в разделе Функции безопасности в 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 затем заменяет символ новой строки на нулевой символом ('\0') перед тем, как вернуть строку. Напротив, функция fgets_s сохраняет символ новой строки.
Если первый прочитанный символ — символ конца файла, в начале buffer сохраняется нулевой символ и возвращается NULL.
_getws — это версия функции gets_s с расширенными символами; ее аргумент и возвращаемое значение являются строками расширенных символов.
Если buffer — NULL, или sizeInCharacters меньше или равен нулю, или если буфер слишком мал для хранения входной строки и нулевого завершающего символа, эти функции вызывают обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если продолжение выполнения разрешено, эти функции возвращают NULL и устанавливают для ERANGE значение errno.
В C++ использование данных функций упрощено наличием шаблонных перегрузок; перегруженные методы могут автоматически определять длину буфера (что исключает необходимость указания аргумента с размером буфера), а также они могут автоматически заменять более старые, незащищенные функции их новыми безопасными аналогами. Дополнительные сведения см. в разделе Безопасные перегрузки шаблонов.
Универсальное текстовое сопоставление функций
Подпрограмма TCHAR.H |
_UNICODE & _MBCS не определены |
_MBCS определено |
_UNICODE определено |
---|---|---|---|
_getts |
gets_s |
gets_s |
_getws |
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
gets_s |
<stdio.h> |
_getws |
<stdio.h> или <wchar.h> |
Консоль не поддерживается в приложениях Магазин Windows. Стандартные дескрипторы потока, связанные с консолью — stdin, stdout и stderr — необходимо перенаправить, чтобы функции C времени выполнения могли использовать их в приложениях Магазин Windows. Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// 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 );
}