问题描述
我刚刚开始学习 C,我遇到了一个在 while 循环中使用函数 getchar
的示例。我不明白 getchar
是如何知道在没有参数的情况下返回哪个字符的。它的使用方式与此类似:
int c;
while((c = getchar()) != EOF){
putchar(c);
}
解决方法
首先注意函数原型:
int getchar(void);
getchar()
函数总是从 standard input 流中读取 next 字符。
它不需要任何参数,因为它只做一件事。特别是,从 documentation:
观察getchar() 函数应等同于 getc(stdin)。
所以 getchar()
实际上与 getc()
相同,只是 getc()
允许您指定输入流。
您的困惑在于 getchar()
函数没有明确的输入参数(以函数参数的形式——它是一个 void
函数),但它可以返回各种不同的结果给你。
它的“输入”取决于用户输入,很像 scanf()
、fgets()
甚至是通过 argv
数组的命令行参数。