为什么C标准包含许多不安全的功能?

时间:2012-12-23 16:47:02

标签: c c99 c89 c11

为什么C标准包含许多不安全的功能,这些功能无用(在好的程序中它们不使用)且有害,例如getchar?为什么C标准不包含有用的功能,例如getchgetche?这只是众多例子中的一个......

UPD 我感到困惑:gets而不是getchar

3 个答案:

答案 0 :(得分:10)

你的意思是gets?不打破旧程序。过时的道路很漫长。   此外, 已被弃用。

答案 1 :(得分:2)

gets在C99中已弃用,在C11中已被删除

C11(ISO / IEC 9899:201x)转发/ 6

  

删除了gets function()

答案 2 :(得分:1)

您无法在电传打字机(看起来像打字机的终端)上实现getch()[无缓冲读取]。或者任何类型的终端,其中数据存储在终端中,直到您输入。

有些函数可以执行此类操作,但请记住,C是一种应该“在任何事情上运行”的语言。

很多年前,

gets是标准库的一部分,所以它必须保留 - 否则,旧代码将无法编译,并且很多人喜欢使用旧代码(因为它有很多工作)修复过去工作的100万行乱码!)