"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的命令行参数=]数组。
我刚开始学习 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的命令行参数=]数组。