While using gets() in my code, the compiler shouts
warning: the 'gets' function is dangerous and should not be used.`
and
warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638)
[-Wdeprecated-declarations]
Any specific reasons?
                        
Yes, because, the
gets()function is dangerous, as it suffers from buffer overflow issue. Anyone should refrain from using that.Also, regarding the warning with
-Wdeprecated-declarations,gets()is no longer a part ofCstandard [C11onwards]. So, C librariescompilersare not bound to support that any more. It can be removed in future. To warn the developer about the potential pitfall and to discourage the further usage ofgets(), the compiler## emits the warning message.(##) To be pedantic, the warning is not generated by the compiler (
gcc) all by itself, rather caused by apragmaor attribute on the implementation ofgets()in theglibcthat causes the compiler to emit the warning. [Courtesy, FUZxxl, from the dupe answer.]