为什么 stdin 和 stdout 被认为是 C 中的文件?

Why are stdin and stdout considered files in C?

例如,stdio.h 库有一些函数需要 FILE * 参数,但接受 stdin 用户从终端输入。

C stdio 函数在 上运行,而不是文件。就您的代码而言,流只是字节的消费者(输出流)或生产者(输入流)。

流可能与磁盘上的文件相关联。它也可以与终端相关联。或者打印机。或网络套接字。或者您可能想与之交流的任何其他内容。流是任何可以读取或写入字节串的东西的抽象

stdinstdout(以及 stderr)是预定义的 FILE * 对象,它们通常指的是您的控制台,尽管您可以在命令行中覆盖它或在您的代码中。

stdinstdout无非就是标准输入输出文件的指针。由于您可以在代码中或使用命令提示符更改这些,因此它们不能指向实际输入,因为那样您将无法更改它。

stdinstdio只是从standard outputstandard input读取或写入的文件中获取信息。这样使用命令和代码更改它就容易多了。