Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / gets опасна! / 5 сообщений из 5, страница 1 из 1
23.07.2013, 17:31
    #38341022
aybek_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gets опасна!
Программа просто берет и считывает строки из стандартного ввода
и автоматически печатает их в стандартный вывод.
Код:
Код: 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
23.07.2013, 18:14
    #38341107
акуз-лингвист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gets опасна!
fgets
...
Рейтинг: 0 / 0
23.07.2013, 18:16
    #38341109
акуз-лингвист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gets опасна!
...
Рейтинг: 0 / 0
23.07.2013, 21:42
    #38341362
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
gets опасна!
aybek_Что это значит? Почему так выходит?

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

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

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

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


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