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


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 );
}
  

Эквивалент в .NET Framework

System::Console::Read

См. также

Ссылки

Потоковый ввод-вывод

gets, _getws

fgets, fgetws

fputs, fputws

puts, _putws