Автор Тема: Проблем със gcc компилатора във "С"  (Прочетена 1856 пъти)

iHshar

  • Участници
  • ***
  • Публикации: 6
    • Профил
Здравеите, ползвам ubuntu 14.04 и съм със GCC компилатор. Програмирам под 'с'. Когато във кога поставя функцията gets(); компилатора ми дава грешка. Ето я и нея: test.c: In function ‘main’:
test.c:8:2: warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
  gets(str);
  ^
/tmp/cczj6WBW.o: In function `main':
test.c:(.text+0x2e): warning: the `gets' function is dangerous and should not be used.


Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Проблем със gcc компилатора във "С"
« Отговор #1 -: Jan 04, 2015, 13:36 »
Както си пише в съобщението за грешка, функцията gets() е отхвърлена, защото е опасна (може да предизвика препълване на буфера) и не трябва да се използва. Ползвай fgets():
Код:
fgets(temp, sizeof(temp), stdin);
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

iHshar

  • Участници
  • ***
  • Публикации: 6
    • Профил
Re: Проблем със gcc компилатора във "С"
« Отговор #2 -: Jan 04, 2015, 17:02 »
Или да си сканирам стринговете със scanf("%s", str); на този етап ми върши работа
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Проблем със gcc компилатора във "С"
« Отговор #3 -: Jan 04, 2015, 17:28 »
scanf("%s", str) създава точно същия проблем като gets(str) обаче компилаторът проявява странна дискриминация по отношение на едното.
Активен

"Knowledge is power" - France is Bacon