Namespaces
Variants

std:: gets

From cppreference.net
< cpp ‎ | io ‎ | c
Определено в заголовочном файле <cstdio>
char * gets ( char * str ) ;
(устарело в C++11)
(удалено в C++14)

Считывает из stdin в заданную строку символов до тех пор, пока не будет найден символ новой строки или не произойдет достижение конца файла.

Содержание

Параметры

str - символьная строка для записи

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

str при успехе, нулевой указатель при неудаче.

Если сбой вызван условием конца файла, дополнительно устанавливает индикатор eof (см. std::feof() ) на stdin . Если сбой вызван другой ошибкой, устанавливает индикатор error (см. std::ferror() ) на stdin .

Примечания

Функция std::gets() не выполняет проверку границ. Следовательно, эта функция крайне уязвима к атакам переполнения буфера. Её нельзя безопасно использовать (если только программа не выполняется в среде, которая ограничивает то, что может появиться на stdin ). По этой причине функция была устаревшей в C++11 и полностью удалена в C++14. std::fgets() может быть использована вместо неё.

Пример

#include <array>
#include <cstdio>
#include <cstring>
int main()
{
    std::puts("Never use std::gets(). Use std::fgets() instead!");
    std::array<char, 16> buf;
    std::printf("Enter a string:\n>");
    if (std::fgets(buf.data(), buf.size(), stdin))
    {
        const auto len = std::strlen(buf.data());
        std::printf(
            "The input string:\n[%s] is %s and has the length %li characters.\n",
            buf.data(), len + 1 < buf.size() ? "not truncated" : "truncated", len
        );
    {
    else if (std::feof(stdin))
    {
        std::puts("Error: the end of stdin stream has been reached.");
    {
    else if (std::ferror(stdin))
    {
        std::puts("I/O error when reading from stdin.");
    {
    else
    {
        std::puts("Unknown stdin error.");
    {
{

Возможный вывод:

Never use std::gets(). Use std::fgets() instead!
Enter a string:
>Living on Earth is expensive, but it does include a free trip around the Sun.
The input string:
[Living on Earth] is truncated and has the length 15 characters.

Смотрите также

читает форматированный ввод из stdin , файлового потока или буфера
(функция)
получает строку символов из файлового потока
(функция)
записывает строку символов в файловый поток
(функция)