专家我对gets(),puts()和getch()表示怀疑。
请用简单的语言解释一下,因为我是初学者。
提前感谢你。 :)
答案 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。)