powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / gets опасна!
5 сообщений из 5, страница 1 из 1
gets опасна!
    #38341022
aybek_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программа просто берет и считывает строки из стандартного ввода
и автоматически печатает их в стандартный вывод.
Код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
 
int main()
{
    char * str = malloc(10);
    while ((str = gets(str)) != NULL) 
        printf("%s\n", str);
    
    return 0;
}


но почемуто при компиляции, выходит такое сообщение:

Код: plaintext
1.
2.
$ gcc code.c
/tmp/ccQb7zWj.o: In function `main':
solve.c:(.text+0x2c): warning: the `gets' function is dangerous and should not be used.

Что это значит? Почему так выходит? И как это решить?
...
Рейтинг: 0 / 0
gets опасна!
    #38341107
Фотография акуз-лингвист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fgets
...
Рейтинг: 0 / 0
gets опасна!
    #38341109
Фотография акуз-лингвист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
gets опасна!
    #38341362
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aybek_Что это значит? Почему так выходит?

gets не контролирует размер буфера-приёмника, фактически, пишет в него безконтрольно.
А делает она это пока не встретит конец стороки. Если строка будет длинная во входном потоке,
то приёмный буфер переполнится и находящаяся рядом память затрётся. Далее -- как повезёт, что там было.

aybek_ И как это решить?

Использовать fgets, которой надо задавать размер буфера-приёмника.

использовать STD из С++ и потоковые библиотеки, функции, которые читают строку и выделяют по мере надобности буфер под неё.
...
Рейтинг: 0 / 0
gets опасна!
    #38341556
aybek_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за помощь.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / gets опасна!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]