gets_s, _getws_sgets_s, _getws_s

Получает строку из потока stdin .Gets a line from the stdin stream. Это версии функций gets, _getws с усовершенствованной безопасностью, как описано в разделе Функции безопасности в CRT.These versions of gets, _getws have security enhancements, as described in Security Features in the CRT.

СинтаксисSyntax

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

ПараметрыParameters

двойнойbuffer
Место хранения входной строки.Storage location for input string.

sizeInCharacterssizeInCharacters
Размер буфера.The size of the buffer.

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

Возвращает buffer в случае успеха.Returns buffer if successful. Указатель NULL указывает на ошибку или конец файла.A NULL pointer indicates an error or end-of-file condition. Используйте ferror или feof для определения того, что именно произошло.Use ferror or feof to determine which one has occurred.

КомментарииRemarks

Функция gets_s считывает строку из стандартного входного потока stdin и сохраняет ее в буфер.The gets_s function reads a line from the standard input stream stdin and stores it in buffer. Строка состоит из всех символов до первого символа новой строки ("\n").The line consists of all characters up to and including the first newline character ('\n'). перед возвратом строки gets_s заменяет символ новой строки символом NULL ("\ 0").gets_s then replaces the newline character with a null character ('\0') before returning the line. В отличие от этого функция fgets_s удерживает символ новой строки.In contrast, the fgets_s function retains the newline character.

Если первый считанный символ является символом конца файла, то в начале буфера сохраняется символ NULL и возвращается значение NULL .If the first character read is the end-of-file character, a null character is stored at the beginning of buffer and NULL is returned.

_getws_s — это версия gets_s для расширенных символов; его аргумент и возвращаемое значение являются строками расширенных символов._getws_s is a wide-character version of gets_s; its argument and return value are wide-character strings.

Если значение buffer равно null или сизеинчарактерс меньше или равно нулю или если буфер слишком мал для хранения входной строки и признака конца null, эти функции вызывают обработчик недопустимого параметра, как описано в разделе Проверка параметров.If buffer is NULL or sizeInCharacters is less than or equal to zero, or if the buffer is too small to contain the input line and null terminator, these functions invoke an invalid parameter handler, as described in Parameter Validation. Если выполнение может быть продолжено, эти функции возвращают значение NULL и задают значение ERANGE.If execution is allowed to continue, these functions return NULL and set errno to ERANGE.

В C++ использование данных функций упрощено наличием шаблонных перегрузок; перегруженные методы могут автоматически определять длину буфера (что исключает необходимость указания аргумента с размером буфера), а также они могут автоматически заменять более старые, незащищенные функции их новыми безопасными аналогами.In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. Дополнительные сведения см. в разделе Безопасные перегрузки шаблонов.For more information, see Secure Template Overloads.

По умолчанию глобальное состояние этой функции ограничивается приложением.By default, this function's global state is scoped to the application. Чтобы изменить это, см. раздел глобальное состояние в CRT.To change this, see Global state in the CRT.

Универсальное текстовое сопоставление функцийGeneric-Text Routine Mappings

Подпрограмма TCHAR.HTCHAR.H routine _UNICODE и _MBCS не определены_UNICODE & _MBCS not defined _MBCS определено_MBCS defined _UNICODE определено_UNICODE defined
_getts_s_getts_s gets_sgets_s gets_sgets_s _getws_s_getws_s

ТребованияRequirements

ПодпрограммаRoutine Обязательный заголовокRequired header
gets_sgets_s <stdio.h>
_getws_s_getws_s <stdio.h> или <wchar.h><stdio.h> or <wchar.h>

Консоль не поддерживается в приложениях универсальная платформа Windows (UWP).The console is not supported in Universal Windows Platform (UWP) apps. Стандартные дескрипторы потока, связанные с консолью, stdin, stdout и stderr, должны быть перенаправляться до того, как функции времени выполнения C смогут использовать их в приложениях UWP.The standard stream handles that are associated with the console, stdin, stdout, and stderr, must be redirected before C run-time functions can use them in UWP apps. Дополнительные сведения о совместимости см. в статье Compatibility.For additional compatibility information, see Compatibility.

ПримерExample

// 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!

См. также разделSee also

Потоковый ввод-выводStream I/O
gets, _getwsgets, _getws
fgets, fgetwsfgets, fgetws
fputs, fputwsfputs, fputws
puts, _putwsputs, _putws