使用getch函数和获取和放置函数

时间:2017-11-01 13:40:27

标签: c gets getch puts

专家我对gets(),puts()和getch()表示怀疑。

  1. 当我们有scanf()和printf()时,为什么要使用gets()和puts()?
  2. getch()的用途是什么。
  3. 请用简单的语言解释一下,因为我是初学者。

    提前感谢你。 :)

2 个答案:

答案 0 :(得分:1)

gets不再存在(除了臭名昭着的TurboC等过时的环境),请改用fgets

  • fgets从包含终端(标准输出)
  • 的文件中读取一行文本
  • puts将一行文本写入终端(标准输出)
  • fputs将一行文本写入文件,包括终端(标准输出)
  • getch从标准输入(终端)读取字符
  • printf和朋友允许您打印格式化输出
  • scanf和朋友允许您阅读格式化输入。

答案 1 :(得分:0)

  

为什么我们在使用scanf()和printf()时会使用gets()和puts()?

我们不使用gets(),这个功能设计得很糟糕,以至于它在18年前被标记为过时,并且最终在6年前完全从C语言中删除。如果有人教您使用gets(),您需要找到更新的学习资源。请参阅What are the C functions from the standard library that must / should be avoided?

puts(str)仅用作printf("%s", str)的微优化。 puts()传统上比printf()略快,因为它不需要解析格式字符串。今天,这种性能优势是无问题的。

但是,puts()printf() 更安全。您可以编写像printf("%s", pointer_to_int)这样的错误代码,它可能会在没有警告的情况下编译。但puts(pointer_to_int)永远不会在没有警告/错误的情况下编译。

一般来说,由于类型安全性差,大多数stdio.h都是危险且不安全的。在专业的,生产质量的代码中避免使用它。出于学生/业余爱好者的目的,printf / scanf无论如何都很好。

  

getch()有什么用?

getch()是C的非标准扩展,它允许程序从stdin读取字符而不将键入的字符回显到stdout(屏幕)。

当Borland Turbo C是主要的编译器时,这个功能在MS DOS时代很流行。由于Turbo C拥有它,其他一些编译器也开始支持它与非标准conio.h库。我们在20世纪90年代初谈论。

您不应在现代C编程中使用此功能。

(虽然可以通过各种API调用自行实现,例如this example for Windows。)