【发布时间】:2014-04-20 14:55:24
【问题描述】:
正在阅读 Head first C 书,偶然发现作者说 gets() 是一种不好的做法
gets()是一个函数 已经存在了很长时间。 但你真正需要知道的 是你真的不应该 使用它。
为什么它被认为是不好的做法?
【问题讨论】:
-
gets函数不再是 C 的一部分。太糟糕了,它被删除了。 -
这是一个安全使用 CANNOT 的函数,因为它有一个要写入的字符缓冲区,但没有最大字符数读。如果您提供太多字符,最终会导致损坏。绝不使用它;首选
fgets()。 -
@IwillnotexistIdonotexist:当
stdin是一个完全受您控制的文件时,有一种使用gets的安全方法。然而,这种情况非常不寻常(并且,我可能会说,人为的)不值得考虑,并且出于实际目的gets总是不安全。