可能重复:
Why is the `gets' function is dangerous? Why should not be used?
我建议用户使用fgets()输入一个字符串,这将使用scanf()进行分析,以区分整数,浮点数和字符。我想要一个可靠的程序但我使用gcc得到以下警告:
在函数main':
: warning: the
获取'函数是危险的,不应该使用。
任何人都可以告诉我为什么它是危险的,它的安全替代方案是什么? 如果有人能告诉我fgets()致命的严重性,那将非常有用。
答案 0 :(得分:4)
gets
不好,fgets
没问题。
man
页面解释了为什么不应该使用gets
:
BUGS
Never use gets(). Because it is impossible to tell without knowing the
data in advance how many characters gets() will read, and because
gets() will continue to store characters past the end of the buffer, it
is extremely dangerous to use. It has been used to break computer
security. Use fgets() instead.
fgets
将缓冲区的大小作为其参数之一,如果使用正确,则不会出现此问题。
常见问题解答有entry with more details。