Все, что связано с функциями стандартной библиотеки C или C++, получает (C) или std::gets (C++). Эти функции используются для чтения последовательности символов из входного потока и записи ее в символьный буфер в виде строки. НЕ ИСПОЛЬЗУЙТЕ ЭТИ ФУНКЦИИ: они устарели, и поскольку C11 больше не является частью стандарта.

Все, что связано с функциями стандартной библиотеки C или C++ gets (определено в <stdio.h> Стандартный заголовок C) или std::gets (определено в <cstdio>Стандартный заголовок C++). Эти функции используются для чтения последовательности символов из входного потока и записи ее в символьный буфер в виде строки. На функции нет ограничений, чтобы они не записывались за пределы переданного массива.

НЕ ИСПОЛЬЗУЙТЕ ЭТИ ФУНКЦИИ: они опасны и устарели по соображениям безопасности, потому что они легко могут вызвать переполнение буфера. Для получения дополнительной информации о том, почему используетсяgets вредно, рассмотрите ссылку ниже.

Начиная с C11 (ISO/IEC 9899:2011) getsбыл удален из стандартной библиотеки C. Приложение K стандарта C определяет дополнительную функцию замены, называемуюgets_s по причинам обратной совместимости, но дает следующую рекомендацию использовать fgets при любой возможности:

ISO 9899:2011 K.3.5.4.1

Рекомендуемая практика

В fgetsФункция позволяет правильно написанным программам безопасно обрабатывать строки ввода, слишком длинные для хранения в массиве результатов. Обычно для этого требуется, чтобы абонентыfgetsобратите внимание на наличие или отсутствие символа новой строки в массиве результатов. Рассмотрите возможность использованияfgets (вместе с любой необходимой обработкой на основе символов новой строки) вместо gets_s.

Обратите внимание, что gets_s() обычно не доступен, кроме как в Windows с использованием библиотеки Microsoft C.

См. CPPreference.com: