什么是C语言中的标准输入?

什么是C语言中的标准输入?,c,C,我想构建自己的scanf函数。基本思想是将数据从一个内存地址保存到另一个内存地址 什么是标准时间?它是像000ffaa一样的内存地址吗? 如果它是一个内存地址,那么它是什么,这样我就可以构建自己的scanf函数。谢谢 否,stdin不是“内存地址” 它是一个I/O流,基本上是一个操作系统级抽象,允许读取(或写入,在stdout的情况下) 您需要使用适当的面向流的I/O函数来读取流 当然,您也可以从RAM中读取,因此最好编写自己的函数,以需要读取字符的函数,然后您可以调整该函数以从RAM读取或从s

我想构建自己的scanf函数。基本思想是将数据从一个内存地址保存到另一个内存地址

什么是标准时间?它是像000ffaa一样的内存地址吗?
如果它是一个内存地址,那么它是什么,这样我就可以构建自己的scanf函数。谢谢

否,
stdin
不是“内存地址”

它是一个I/O流,基本上是一个操作系统级抽象,允许读取(或写入,在
stdout
的情况下)

您需要使用适当的面向流的I/O函数来读取流

当然,您也可以从RAM中读取,因此最好编写自己的函数,以需要读取字符的函数,然后您可以调整该函数以从RAM读取或从
stdin
读取

比如:

int my_scanf(int (*getchar_callback)(void *state), void *state, const char *fmt, ...);
这通常是合理的。
state
指针是一些用户定义的状态,它是
getchar\u callback()
函数所需要的,并通过
my\u scanf()
传递给它。stdin是一个“输入流”,它是从用户或文件获取输入的抽象术语。它是一个抽象层,位于实际文件处理和I/O之上。streams的目的主要是使您的代码在不同系统之间可移植

对内存的读/写是更低级的,与流本身无关。为了以有意义的方式使用流,您必须知道某个编译器如何在内部实现流,这可能不是公共信息。在某些情况下,如在Windows中,流由操作系统本身定义,可以通过API调用访问

如果您希望构建自己的scanf函数,那么必须研究特定操作系统的特定API函数,然后在这些函数的基础上构建自己的抽象层

在Unix上,一切都是文件

或者像他们注意到的那样

一切都是一个文件描述符


你可以在unix系统
/dev/stdin
上找到谁是指向
/dev/fd/0
的符号链接谁是字符特殊文件看看:从某种意义上说,它是
file*
类型的指针,但一定要研究我刚才提到的两个答案,因为你真的不应该把它当作指针。它是操作系统的东西,因此,它不仅在C语言中,而且在其他语言中,例如,
fgets
是面向流的I/O函数,
stdin
是输入流?