Scroll to navigation

GETS(3) Руководство программиста Linux GETS(3)

ИМЯ

gets - получает строку из стандартного потока ввода (УСТАРЕЛА)

СИНТАКСИС

#include <stdio.h>
char *gets(char *s);

ОПИСАНИЕ

Никогда не используйте эту функцию.

Функция gets() считывает строку из stdin и записывает её в буфер, на который указывает s, пока не встретится символ новой строки или EOF, которые заменяются байтом null ('\0'). Проверка на переполнение буфера не производится (смотрите ДЕФЕКТЫ далее).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении функция gets() возвращает s и NULL при ошибке или если достигнут конец файла, а символы остались несчитанными. Тем не менее, из-за невозможности проверить переполнение буфера, нет гарантии, что функция вообще что-нибудь сможет вернуть.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
gets() Безвредность в нитях MT-Safe

СООТВЕТСТВИЕ СТАНДАРТАМ

C89, C99, POSIX.1-2001.

В LSB функция gets() указана как устаревшая. В POSIX.1-2008 функция gets() как вышедшая из употребления. В ISO C11 описание gets() удалено из языка Си, и начиная с версии 2.16, заголовочные файлы glibc не объявляют эту функцию, если не определён макрос тестирования свойств _ISOC11_SOURCE.

ДЕФЕКТЫ

Никогда не используйте gets(), потому что без предварительного знакомства с данными невозможно узнать, какое количество символов считает gets(), а также потому, что gets() будет продолжать заносить символы в буфер даже по достижении его конца, что представляет собой большую опасность. Эта функция использовалась для взлома систем безопасности компьютера. Вместо этой функции используйте fgets().

Подробное описание смотрите в CWE-242 (или «Use of Inherently Dangerous Function») на http://cwe.mitre.org/data/definitions/242.html

СМ. ТАКЖЕ

read(2), write(2), ferror(3), fgetc(3), fgets(3), fgetwc(3), fgetws(3), fopen(3), fread(3), fseek(3), getline(3), getwchar(3), puts(3), scanf(3), ungetwc(3), unlocked_stdio(3), feature_test_macros(7)

ЗАМЕЧАНИЯ

Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.

ПЕРЕВОД

Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

15 сентября 2017 г. GNU