13.20 为什么大家都说不要使用 gets()?

跟 fgets() 不同, gets() 不能被告知输入缓冲区的大小, 因此不能避免缓冲区 的溢出。标准库的 fgets() 函数对 gets() 作了很大的改进, 尽管它仍然不完善。 如果真的可能输入很长的行, 还是需要仔细思考, 正确处理。 参见问题 7.1 用 fgets() 代替 gets() 的代码片断。

参考资料: [Rationale, Sec. 4.9.7.2]; [H&S, Sec. 15.7 p. 356]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)