"getchar()" 如何知道要在 C 中读取哪个字符?

How does "getchar()" know what character to read in C?

我刚开始学习 C,我遇到了一个在 while 循环中使用函数 getchar 的例子。我不明白 getchar 如果不接受任何参数,它如何知道 return 的哪个字符。它的使用方式类似于:

int c;
while((c = getchar()) != EOF){
    putchar(c);
}

首先注意函数原型:

int getchar(void);

getchar()函数总是standard input流中读取下一个字符。

不需要任何参数,因为它只做一件事。特别是,观察 documentation:

The getchar() function shall be equivalent to getc(stdin).

所以getchar()其实和getc()是一样的,只是getc()允许你指定输入流。

你的困惑在于 getchar() 函数没有明确的输入参数(以函数参数的形式——它是一个 void 函数)但它可以 return 各种不同的结果给你。

它的“输入”取决于用户输入,很像scanf()fgets()甚至通过[=19的命令行参数=]数组。