为什么get()被弃用?

在我的代码中使用gets()时,编译器会大喊大叫

 warning: the 'gets' function is dangerous and should not be used.` 

 warning: 'gets' is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations] 

任何具体原因?

有人可以解释为什么编译器显示那样……?

是的,因为, gets()函数是危险的,因为它遇到缓冲区溢出问题。 任何人都应该避免使用它。

此外,关于使用-Wdeprecated-declarations的警告, gets()不再是C标准[ C11以后]的一部分。 所以,C库 编译器 不再支持那种了。 它将来可以删除。 为了警告开发人员潜在的陷阱并阻止进一步使用gets() ,编译器##会发出警告消息。


(##)要迂腐,编译器( gcc )本身并不会生成警告,而是由glibcgets()实现的pragma或属性引起编译器发出警告。 [礼貌,FUZxxl,来自骗局答案。]

  1. gets可能会导致缓冲区溢出,因为它不考虑数据的长度。 更多细节在这里: C中的gets()函数

  2. 不推荐使用的消息意味着,此function被标记为已弃用,可能会在以后删除标准。 因此不鼓励用户使用它。