Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: iHshar в Jan 04, 2015, 12:21



Титла: Проблем със gcc компилатора във "С"
Публикувано от: iHshar в Jan 04, 2015, 12:21
Здравеите, ползвам 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.




Титла: Re: Проблем със gcc компилатора във "С"
Публикувано от: neter в Jan 04, 2015, 13:36
Както си пише в съобщението за грешка, функцията gets() е отхвърлена, защото е опасна (може да предизвика препълване на буфера) и не трябва да се използва. Ползвай fgets():
Код:
fgets(temp, sizeof(temp), stdin);


Титла: Re: Проблем със gcc компилатора във "С"
Публикувано от: iHshar в Jan 04, 2015, 17:02
Или да си сканирам стринговете със scanf("%s", str); на този етап ми върши работа


Титла: Re: Проблем със gcc компилатора във "С"
Публикувано от: gat3way в Jan 04, 2015, 17:28
scanf("%s", str) създава точно същия проблем като gets(str) обаче компилаторът проявява странна дискриминация по отношение на едното.